从 PFX (PKCS #12) 文件创建 RSA 私钥

Posted

技术标签:

【中文标题】从 PFX (PKCS #12) 文件创建 RSA 私钥【英文标题】:Creating RSA Private Key from PFX (PKCS #12) file 【发布时间】:2012-09-07 08:32:35 【问题描述】:

我正在尝试从 pkcs #12 文件中获取私有 RSA 密钥。

我试过运行标准

openssl pkcs12 -nocerts -out priv.pem -in domain.com.pfx

但是,这会产生如下所示的密钥文件:

Bag Attributes
Microsoft Local Key set: <No Values>
localKeyID: 01 00 00 00 
friendlyName: xxxxxxxx
Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
Key Attributes
X509v3 Key Usage: 10
-----BEGIN ENCRYPTED PRIVATE KEY-----

我需要放入的服务器无法处理密钥文件,当我查看示例数据时,我看到如下文件

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,2CF27DD60B8BB3FF

当然,这两个文件中都存在密钥。 但是,服务器似乎只接受 RSA 私钥文件,而且在我看来,我得到的输出是一个 X509v3 文件,有人知道如何将其转换为 RSA 私钥文件吗?

【问题讨论】:

尝试在 -nocerts 之后添加 -nodes 以创建未加密的私钥 谢谢。也试过这个,但我无法从输出 pemfile 中删除密码,这仍然让我留下 X509v3 文件 【参考方案1】:

这对我有用:

openssl pkcs12 -in "$1" \
    -nocerts -nomacver \
    -passin file:<(cat "$pw") \
    -passout file:<(cat "$pw") |
sed -n '/^-----BEGIN ENCRYPTED PRIVATE KEY-----/,/^-----END ENCRYPTED PRIVATE KEY-----/p'

【讨论】:

【参考方案2】:

在 windows 7 64bit 上,您可以简单地使用您的命令。但在 mac 和 linux 中,您应该执行以下步骤:

1、创建你的 pem 文件: openssl pkcs12 -in xxx.pfx -out xxx.pem

2,创建您的 rsa 私钥: openssl pkcs12 -in xxx.pfx -passin pass:yourpassword | openssl rsa -des3 -passout pass:yourpassowrd -out xxx.key

此步骤将创建包含以下内容的密钥文件:" -----开始 RSA 私钥----- Proc-Type:4,加密 DEK-信息:DES-EDE3-CBC,2CF27DD60B8BB3FF"

3,在文本编辑器中打开您的 .pem 和 .key 文件,并替换原始密钥” -----BEGIN ENCRYPTED PRIVATE KEY-----" 在 .pem 文件中 使用 .key 文件中的 rsa 密钥。

【讨论】:

【参考方案3】:

嗯 - 使用文本编辑器删除有问题的行可能是最简单的。否则下面会清理包属性:

openssl pkcs12 -in x.pfx  -nocerts -nodes -passin pass:123456 | openssl rsa -out privkey.pem

也可以用来获取der/net

openssl pkcs12 -in x-fred.p12  -nocerts -nodes -passin pass: | openssl rsa -outform DER -out privkey.der

这实际上可能是您想要的格式。但是,工具不接受无密码的私钥是相当普遍的(如果字符数不是至少 4 或 6,许多工具将默默地失败)。因此,在这些情况下,将尾部更改为:

.... | openssl rsa -passout pass:123456 -out privkey.pem
.... | openssl rsa -passout pass:123456 -out privkey.der -outform der

【讨论】:

以上是关于从 PFX (PKCS #12) 文件创建 RSA 私钥的主要内容,如果未能解决你的问题,请参考以下文章

使用OpenSSL创建多级CA证书链签发证书并导出为pkcs12/p12/pfx文件

使用OpenSSL创建多级CA证书链签发证书并导出为pkcs12/p12/pfx文件

使用OpenSSL创建多级CA证书链签发证书并导出为pkcs12/p12/pfx文件

如何使用keytool将证书创建到PKCS12密钥库?

从 pfx 证书中提取文件 .cer 和文件 .key

pfx是啥文件