从 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文件