我正在尝试从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私钥文件?
答案 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'