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

时间:2012-09-14 07:37:36

标签: encryption certificate ssl-certificate rsa pem

我正在尝试从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-----

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

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

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

3 个答案:

答案 0 :(得分:25)

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

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,很多工具都会默默地失败)。因此,在这些情况下,将tailend更改为:

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

答案 1 :(得分:0)

在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

此步骤将使用conten创建密钥文件:“ -----开始RSA私钥----- Proc-Type:4,ENCRYPTED DEK-Info:DES-EDE3-CBC,2CF27DD60B8BB3FF“

3,在文本编辑器中打开.pem和.key文件,并替换原始密钥“ -----在.pem文件中开始加密私钥-----“ 使用.key文件中的rsa键。

答案 2 :(得分:0)

这对我有用:

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'