【问题标题】:Get PEM public and private keys or from PFX file获取 PEM 公钥和私钥或从 PFX 文件
【发布时间】:2020-12-21 14:21:43
【问题描述】:

我有一个用openssl 使用以下命令生成的 PEM 文件:

.\openssl.exe  pkcs12 -in "C:\temp\mytest.pfx" -nokeys -out "C:\temp\mytest.publicchain.pem"

这会生成一个包含以下内容的 PEM 文件:

-----BEGIN CERTIFICATE-----
MIIJbTCCByGgAwIBAgITfgAAADLWmZPQJCEhKgAAAAAAMjBBBgkqhkiG9w0BAQow
NKAPMA0GCWCGSAFlAwQCAwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUA
... [removed rest of key for obvious reasons]
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIHFzCCBP+gAwIBAgITHgAAAAR0/hITgHTMqgAAAAAABDANBgkqhkiG9w0BAQ0F
ADAcMRowGAYDVQQDExFFbmVjby1TQkRULVJvb3RDQTAeFw0xOTA4MjcyMjMwMjFa
... [removed rest of key for obvious reasons]
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIFsDCCA5igAwIBAgIQM4wn3z5DLaxG8ARk2MpMJTANBgkqhkiG9w0BAQ0FADAc
MRowGAYDVQQDExFFbmVjby1TQkRULVJvb3RDQTAeFw0xODA5MTcwNzIyNDhaFw0y
... [removed rest of key for obvious reasons]
-----END CERTIFICATE-----

我也在使用来自 Apache 的 AxualFramework,我需要为其提供 PEM 公钥和私钥。他们的描述是:

用于身份验证的客户端公钥字符串(PEM 格式)。

用于身份验证的客户端私钥字符串(PEM 格式)。

现在我的问题是,如何从我的 PEM 文件或 PFX 文件中提取它?哪个更容易做?

我还安装了作为 Nuget 包的 BouncyCastle,但我不确定要使用什么方法。

我还尝试使用以下方法从 PFX 文件中获取它:

X509Certificate2 cert = certificateCollection[0];
var pubKey = cert.PublicKey.Key.ExportSubjectPublicKeyInfo();
var pubKeyString = Convert.ToBase64String(pubKey); // Is this even correct?

// how to get private key...?

但我真的不知道这是否是这样做的方式......

谁能指引我正确的方向?

【问题讨论】:

    标签: .net ssl asp.net-core-3.1 pem x509certificate2


    【解决方案1】:

    由于您已经在使用 OpenSSL,您可以使用它的命令行工具在不同格式之间进行转换。在您的情况下,您已经运行的 pkcs12 命令导出了证书没有其密钥,因此您将无法使用 mytest.publicchain.pem 来提取私钥。

    相反,您可以从 PFX 导出 RSA 私钥,然后从私钥中提取公钥:

    openssl pkcs12 -in mytest.pfx -nocerts -nodes -out mytest.key
    openssl rsa -in mytest.key -pubout -out mytest.pub
    

    mytest.keymytest.pub 文件分别是 PEM 格式的私钥和公钥。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 2011-11-05
      相关资源
      最近更新 更多