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

Dor*_*ana 17 encryption rsa certificate ssl-certificate pem

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

我试过运行标准

openssl pkcs12 -nocerts -out priv.pem -in domain.com.pfx
Run Code Online (Sandbox Code Playgroud)

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

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-----
Run Code Online (Sandbox Code Playgroud)

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

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,2CF27DD60B8BB3FF
Run Code Online (Sandbox Code Playgroud)

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

Dir*_*lik 29

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

openssl pkcs12 -in x.pfx  -nocerts -nodes -passin pass:123456 | openssl rsa -out privkey.pem
Run Code Online (Sandbox Code Playgroud)

并且还可以用来获得der/net

openssl pkcs12 -in x-fred.p12  -nocerts -nodes -passin pass: | openssl rsa -outform DER -out privkey.der
Run Code Online (Sandbox Code Playgroud)

这可能实际上是你想要的格式.虽然工具不接受密码少的私钥是很常见的(如果字符数不是4或6,很多工具都会默默地失败).所以在那些情况下将tailend更改为:

.... | openssl rsa -passout pass:123456 -out privkey.pem
.... | openssl rsa -passout pass:123456 -out privkey.der -outform der
Run Code Online (Sandbox Code Playgroud)