转换PKCS#12证书到PEM使用OpenSSL(Converting PKCS#12 certif

2019-07-20 17:58发布

我已经在Windows 7 64位的OpenSSL这是我从下载了OpenSSL的换窗户上谷歌代码 。 我试图运行:

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" 

但我得到一个错误。

unable to load private key

我如何提取从PKCS#12店使用OpenSSL在PEM证书?

Answer 1:

尝试:

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

如果您需要输入PKCS#12密码,直接在命令行(如脚本),只需添加-passin pass:${PASSWORD}

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys -passin 'pass:P@s5w0rD'


Answer 2:

你只需要提供密码。 你可以用下面的语法相同的命令行内做到这一点:

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password]

然后你将被提示输入密码来加密输出文件的私钥。 包括如果你要导出的私钥加密(明文)以上就行了“节点”选项:

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes

更多信息: http://www.openssl.org/docs/apps/pkcs12.html



Answer 3:

如果你可以使用Python,如果你有它更容易pyopenssl模块。 这里是:

from OpenSSL import crypto

# May require "" for empty password depending on version

with open("push.p12", "rb") as file:
    p12 = crypto.load_pkcs12(file.read(), "my_passphrase")

# 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())


Answer 4:

我有一个PFX文件,并创造NGINX KEY文件所需,所以我这样做:

openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes

然后,我不得不编辑KEY文件,并删除所有内容以-----BEGIN PRIVATE KEY----- 。 这NGINX后接受了KEY文件。



文章来源: Converting PKCS#12 certificate into PEM using OpenSSL