【问题标题】:How can I convert a SSL certificate from PEM to DER and keep the private key?如何将 SSL 证书从 PEM 转换为 DER 并保留私钥?
【发布时间】:2010-09-17 20:00:05
【问题描述】:

背景故事:我有一个带有对称密码(密码)的 PKCS#12 (p12) 证书,我使用 OpenSSL 将其转换为 PEM;打开它作为文本我看到它包含BEGIN/END CERTIFICATE 部分以及BEGIN/END RSA PRIVATE KEY。 .NET Framework X509Certificate 类仅支持“ASN.1 DER”格式,因此我使用 OpenSSL 将 PEM 转换为 DER。不幸的是,这样做似乎不包括我与SslStream & TcpClient 建立 SSL 连接所需的私钥。

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 中使用它进行签名?

【问题讨论】:

    标签: c# .net ssl certificate x509


    【解决方案1】:

    哎呀,我落后了!看起来X509Certificate2 可以读取 PKCS#12 文件,因此无需进行任何转换。

    【讨论】:

      【解决方案2】:

      证书和密钥通常分开存储。将 PEM 文件剪切成两个文件,一个带有证书,一个带有密钥。然后,您可以使用 openssl 工具包将每个文件分别转换为 DER 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-14
        • 2019-08-26
        • 1970-01-01
        • 1970-01-01
        • 2017-09-16
        • 2011-09-02
        • 2014-09-27
        • 2020-01-28
        相关资源
        最近更新 更多