背景故事:我有一个带有对称密码(密码)的 PKCS#12 (p12) 证书,我使用 OpenSSL 将其转换为 PEM;打开它作为文本,我看到它包含一个BEGIN/END CERTIFICATE
部分以及BEGIN/END RSA PRIVATE KEY
. .NET FrameworkX509Certificate
类仅支持“ASN.1 DER”格式,因此我使用 OpenSSL 将 PEM 转换为 DER。不幸的是,这样做似乎不包括我与SslStream
&建立 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 中使用它进行签名?