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

Encryption 从PFX(PKCS#12)文件创建RSA私钥,encryption,certificate,ssl-certificate,rsa,pem,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

我正试图从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-----
当然,这两个文件中都有密钥。
然而,服务器似乎只接受RSA私钥文件,而且在我看来,我得到的输出似乎是一个X509v3文件,任何人都知道如何将其保存到RSA私钥文件中?

嗯-使用文本编辑器删除有问题的行可能是最简单的。否则,以下内容将清除行李属性:

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

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

1、创建您的pem文件:
openssl pkcs12-输入xxx.pfx-输出xxx.pem

2、创建您的rsa私钥:
openssl pkcs12-in xxx.pfx-passin pass:yourspassword | openssl rsa-des3-passout pass:yourspassowrd-out xxx.key

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

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

这对我很有用:

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'
openssl pkcs12-在“$1”中\
-nocerts-nomacver\

-passin文件:尝试在-nocert之后添加-nodes以创建未加密的私钥。我也试过了,但是我无法从输出文件中删除密码,这仍然会留下X509v3文件
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'