使用OpenSSL将PKCS#12证书转换为PEM
我在Windows 7上安装了OpenSSL x64,我从Google Code上的openssl-for-windows下载。 我试图运行:
openssl pkcs12 -export -in "path.p12" -out "newfile.pem"
但是我得到一个错误。
unable to load private key
如何使用OpenSSL从PKCS#12商店中提取PEM中的证书?
尝试:
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes
之后你有:
- 证书在newfile.crt.pem
- 私钥在newfile.key.pem中
要将证书和密钥放在同一个文件中,请使用以下内容
openssl pkcs12 -in path.p12 -out newfile.pem
你只需要提供一个密码。 您可以在相同的命令行中使用以下语法来执行此操作:
openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password]
您将被提示input密码来encryption输出文件中的私钥。 如果要导出未encryption的私钥(明文),请在上面的行中包含“节点”选项:
openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes
更多信息: http : //www.openssl.org/docs/apps/pkcs12.html
如果你可以使用Python,如果你有pyOpenSSL
就更容易。 这里是:
from OpenSSL import crypto # May require "" for empty password depending on version p12 = crypto.load_pkcs12(file("push.p12", 'rb').read()[, password]) # PEM formatted private key print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey()) # PEM formatted certificate print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate())
这将与一个.pem
文件在同一个文件中有私钥和证书(我尝试了这个苹果推送通知证书)
( PushNotif.pem
包含私钥和证书在一个文件中)
$ openssl pkcs12 -export -in PushNotif.pem -inkey PushNotif.pem -out PushNotif.p12
inputPushNotif.pem的密码短语:
input导出密码:
validation – input导出密码:
一旦你input你的密码,你很好去。
我有一个PFX文件,需要为NGINX创buildKEY文件,所以我这样做了:
openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes
然后我不得不编辑KEY文件并删除所有内容-----BEGIN PRIVATE KEY-----
。 之后,NGINX接受了KEY文件。