如何删除该字符串中的第一行和最后一行
String key = "-----BEGIN PUBLIC KEY-----\n" +
"MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgE0JOa5WUcifbDnnQWB2WKOOODwq\n" +
"JUxu/7fG2BaynwVRSifljrzGjqpS24R0ss3cZZSKfD2GszG0aVd5T1Yvh4kSOzsx\n" +
"arj8QUkfW/EL5ClhDv8LVtkErbTU42QLUUTl5izyKZXaHFdBnJZ8jqXk4AlK22mp\n" +
"LcMadrpv7SzQJq1HAgMBAAE=\n" +
"-----END PUBLIC KEY-----";
Run Code Online (Sandbox Code Playgroud)
我想要一个像这样的输出字符串
String key ="MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgE0JOa5WUcifbDnnQWB2WKOOODwq
JUxu/7fG2BaynwVRSifljrzGjqpS24R0ss3cZZSKfD2GszG0aVd5T1Yvh4kSOzsx
arj8QUkfW/EL5ClhDv8LVtkErbTU42QLUUTl5izyKZXaHFdBnJZ8jqXk4AlK22mp
LcMadrpv7SzQJq1HAgMBAAE="
Run Code Online (Sandbox Code Playgroud) 我在连接到安全 URL 时遇到了一些 SSL 连接问题,后来我通过提供 .pem 文件路径进行验证来修复此问题。IE,verify="file/path.pem"
我的疑问是该文件是否应该存储在服务器上的公共位置,或者该文件是否应该成为项目源代码的一部分,从而成为版本控制的一部分。
请指教。
我这样做是为了通过写出 pem 文件来处理 pfx 证书。
我怎样才能取出public_key?我注意到 p12 对象没有 get_publickey() 方法。
import contextlib
import OpenSSL.crypto
import os
import requests
import ssl
import tempfile
pfx_password = 'thiscertpassword'
tpem = 'temppem.pem'
pfxfile = 'fts.pfx'
f_pem = open(tpem, 'wb')
pfx = open(pfxfile, 'rb').read()
p12 = OpenSSL.crypto.load_pkcs12(pfx, pfx_password)
f_pem.write(OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM,
p12.get_privatekey()))
#f_pem.write(OpenSSL.crypto.dump_publickey(OpenSSL.crypto.FILETYPE_PEM,
p12.get_publickey())) # NO SUCH METHOD
f_pem.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM,
p12.get_certificate()))
Run Code Online (Sandbox Code Playgroud) 我是一名 git 新用户,正在尝试遵循 Lynda.com 教程。我发出了教程中的确切命令。我使用的是 Windows 10,git 版本 1.9.4.msysgit.2。我已从 GitHub 复制了以下 url(来自所需的 Github Repo)并发出以下命令并收到以下错误。
owner@LAPTOP-0FP78GPS /c/users/owner/Documents (master)
$ git clone https://github.com/kevinskoglund/explore_california.git lynda_version
Cloning into 'lynda_version'...
fatal: unable to access 'https://github.com/kevinskoglund/explore_california.git/': error setting certificate verify locations:
CAfile: C:\Program Files\Git\mingw64\ssl\cert.pem
CApath: C:/RailsInstaller/Git/path/to/cacerts
Run Code Online (Sandbox Code Playgroud) 我经历了许多类似的话题,但没有运气!!
我想使用 PEM 文件生成公钥和私钥。以下是我使用的代码:
String pemFileNme = "C:\\Users\\amitmm\\Desktop\\clean\\key.pem";
File pubKeyFile = new File(pemFileNme);
File privKeyFile = new File(pemFileNme);
// read public key DER file
DataInputStream dis = new DataInputStream(new
FileInputStream(pubKeyFile));
byte[] pubKeyBytes = new byte[(int)pubKeyFile.length()];
dis.readFully(pubKeyBytes);
dis.close();
// read private key DER file
dis = new DataInputStream(new FileInputStream(privKeyFile));
byte[] privKeyBytes = new byte[(int)privKeyFile.length()];
dis.read(privKeyBytes);
dis.close();
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
// decode public key
X509EncodedKeySpec pubSpec = new X509EncodedKeySpec(pubKeyBytes);
RSAPublicKey pubKey = (RSAPublicKey)
keyFactory.generatePublic(pubSpec);
// decode private key
PKCS8EncodedKeySpec privSpec = …Run Code Online (Sandbox Code Playgroud) 我阅读了 .der 文件如下。
byte[] byteKey = File.ReadAllBytes(openFileDialog1.FileName);
X509Certificate2 cert = new X509Certificate2(byteKey);
Run Code Online (Sandbox Code Playgroud)
但它没有私钥。它只有公钥。
cert.HasPrivateKey 返回 false。
当我搜索它时,我发现“.der 文件没有私钥,私钥在 .key 文件中”。
我使用记事本++在与.der文件相同的路径中打开一个.key文件,将打印损坏的文本。
第一个问题,如何从 C# 上的 .key 文件中读取私钥?
其次,如何在 C# 上将 .key 文件转换为 .pem 文件?它只是使用openssl吗?
我会很感激你的教导。
我有计划文本格式的私钥。我想转换为 .pem 或 .cer 文件。我不知道开放 SSL。我能够在 .net 应用程序中使用私钥的纯文本文件。谁来帮帮我。如何将其转换为 .pem 或 .cer 以在我们的项目中使用。
我希望能够在 API 请求中发送证书。
请参阅 -根据 RestSharp 请求添加证书
正如那篇文章所示。我需要将 .crt 和 .key 转换为 .pfx ,但是我当前的证书是 .pem ,所以我想我需要先将它们转换为 .crt 和 .key ,然后使用该帖子中使用的 openssl 命令来转换它们到 .pfx 中,然后继续解决方案的其余部分。
我的证书是——
CRT 文件 - C:\Users\JohnSmith\Downloads\certsh\client-crt.pem
密钥文件 - C:\Users\JohnSmith\Downloads\certsh\client-key.pem
我能够将 Key 文件转换为 .key ,但是当尝试转换 CRT 文件时,我收到此错误。
unable to load certificate 13668:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:697:Expecting: TRUSTED CERTIFICATE error in x509
Run Code Online (Sandbox Code Playgroud)
我正在使用此命令尝试将 .pem 转换为 .crt
x509 -outform der -in client-csr.pem -out client.crt
Run Code Online (Sandbox Code Playgroud) 我有一个 X509 PEM 文件,其内容如下
-----BEGIN CERTIFICATE-----
MIIDaaaaaaa==
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
获取它的通用名称(CN,理解为可以使用它的url)。如红色方块所示,现代浏览器可以从 PEM 文件中读取 CN。但是,我没有从 的输出中找到这样的内容openssl x509 --help。
我正在尝试设置皇家邮件运输API(如果有任何人有这方面的经验,我将不胜感激,如果你可以提供帮助).
在他们提供的文档中,我需要下载证书(.p12文件)并将其导入我的Windows机器 - 使用"证书导入向导"非常简单.一旦达到"设置安全级别",我必须选择" 高 ",这将在每次使用时使用密码请求权限.
在"内容"选项卡的"Internet选项"中的Internet Explorer中,我可以查看"证书",并且可以清楚地看到此证书已导入且尚未过期.
下一步是提取证书组件,在这里我必须使用OpenSSL运行以下三个命令来生成.pem文件.
$ openssl pkcs12 -in mycert.p12 -cacerts -nokeys -out cacert.pem
$ openssl pkcs12 -in mycert.p12 -clcerts -nokeys -out mycert.pem
$ openssl pkcs12 -in mycert.p12 -nocerts -nodes -out mykey.pem
Run Code Online (Sandbox Code Playgroud)
文档说明cacert.pem文件可以由应用程序使用文件本身直接引用,我相信我已经在我的PHP脚本中完成了,但是我不清楚我应该把其他mycert和mykey pem文件放在哪里.
文件说明如下: -
在建立SSL网络连接时,应用程序如何通过已发布的客户端SSL证书依赖于应用程序和环境,但它实际上需要同时访问"mycert.pem"和"mykey.pem"文件,或者在某些情况下,需要访问单个包含证书和密钥的组合文件.
所以它没有说明应用程序如何使用这两个文件,目前我刚刚将它们放在与cacert.pem文件相同的目录中.
如果我尝试直接从浏览器访问网址https://api.royalmail.com/shipping/onboarding,它会要求我选择一个证书,我选择这个然后输入正确的密码,当它要求'格兰特或拒绝使用此密钥的权限'.一旦我输入正确的密码,就会显示以下页面 - 任何人都可以确认这是否意味着问题是在我的最后还是皇家邮件在他们的最后没有正确配置的东西.
除此之外,我用于向SOAP API发送SOAP请求的实际PHP脚本不起作用(可能与上面的所有内容有关).
在我的PHP脚本中,soapclient选项设置如下:
$soapclient_options['cache_wsdl'] = 'WSDL_CACHE_NONE';
$soapclient_options['local_cert'] = 'certs/cacert.pem';
$soapclient_options['passphrase'] = $api_certificate_passphrase;
$soapclient_options['trace'] = true;
$soapclient_options['ssl_method'] = 'SOAP_SSL_METHOD_SSLv3';
$soapclient_options['location'] = 'https://api.royalmail.com/shipping/onboarding';
$client = new SoapClient('SAPI/ShippingAPI_V2_0_8.wsdl', $soapclient_options);
$client->__setLocation($soapclient_options['location']); …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照此博客Secure gRPC with TLS/SSL上的说明创建与相互 tls 的 gRPC 连接,但我不想创建证书并将其保存到磁盘上的文件中,我希望服务本身创建它的密钥,那么证书颁发机构的密钥将被带到其他地方(我计划使用 google pki 作为 ca)。
到目前为止我所做的我可以使用 rsa 创建私钥/公钥对,然后按照Golang 的一些代码将公钥编码为 pem 密钥:生成 DSA 私钥、公钥和 PEM 文件示例现在我知道如何创建使用LoadX509KeyPair 的证书。我不知道从哪里获取第二个参数的值,它需要以字节为单位的 keyPemBlock,但 RSA 私钥不在字节上。
我想问一下,如果可能的话,是否有更好的方法来使用 RSA 创建证书?
如果我们可以使用 RSA 创建证书;使用我上面的不完整解决方案,我可以在哪里获得tls.LoadX509KeyPair?的第二个参数的值。
谢谢
这就是我生成公钥/私钥对的方式
var statusCode: OSStatus
var publicKey: SecKey?
var privateKey: SecKey?
let publicKeyAttribute: [NSObject : NSObject] = [kSecAttrIsPermanent: true as NSObject, kSecAttrApplicationTag: "publictag".data(using: String.Encoding.utf8)! as NSObject]
let privateKeyAtrribute: [NSObject: NSObject] = [kSecAttrIsPermanent: true as NSObject, kSecAttrApplicationTag: "privatetag".data(using: String.Encoding.utf8)! as NSObject]
var keyPairAttr = [NSObject: Any]()
keyPairAttr[kSecAttrType] = kSecAttrKeyTypeRSA
keyPairAttr[kSecAttrKeySizeInBits] = 2048
keyPairAttr[kSecReturnData] = true
keyPairAttr[kSecPublicKeyAttrs] = publicKeyAttribute
keyPairAttr[kSecPrivateKeyAttrs] = privateKeyAtrribute
statusCode = SecKeyGeneratePair(keyPairAttr as CFDictionary, &publicKey, &privateKey)
Run Code Online (Sandbox Code Playgroud)
这会生成如下所示的密钥对,
公钥:
Optional(<SecKeyRef algorithm id: 1, key type: RSAPublicKey, version: 4, block size: 2048 …Run Code Online (Sandbox Code Playgroud)