如何将SSL证书从PEM转换为DER并保留私钥?
-
03-07-2019 - |
题
背景故事:我有一个带有对称密码(密码)的PKCS#12(p12)证书,我使用OpenSSL转换为PEM;打开文本,我看到它包含 BEGIN / END CERTIFICATE
部分以及 BEGIN / END RSA PRIVATE KEY
。 .NET Framework X509Certificate
类仅支持“ASN.1 DER”。格式,所以我使用OpenSSL将PEM转换为DER。不幸的是,这似乎不包括私钥,这是我与 SslStream
&amp;进行SSL连接所需要的。 <代码> TcpClient的代码>
X509CertificateCollection certsFromFile = new X509CertificateCollection();
X509Certificate2 cert = new X509Certificate2("my.der.crt");
if (!cert.HasPrivateKey)
throw new Exception("No private key");
certsFromFile.Add(cert);
TcpClient tcpclient = new TcpClient(hostname, port);
SslStream sslstream = new SslStream(tcpclient.GetStream(), false,
null, null);
sslstream.AuthenticateAsClient(hostname, certsFromFile,
SslProtocols.Ssl3, false);
sslstream.Close();
tcpclient.Close();
如何在保留私钥信息的同时获取此PEM文件并将其转换为DER,以便我可以在.NET中使用它进行签名?
解决方案
哎呀,我落伍了!看起来
X509Certificate2
可以读取PKCS#12文件,因此无需任何转换。 其他提示
证书和密钥通常单独存储。将PEM文件剪切为两个文件,一个包含证书,另一个包含密钥。然后,您可以使用openssl工具包将每个文件分别转换为DER文件。
不隶属于 StackOverflow