首页 文章

使用OpenSSL将PKCS#12证书转换为PEM

提问于
浏览
151

我在Windows 7上安装了OpenSSL x64,我是从openssl-for-windows on Google Code下载的 . 我正试图跑:

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

但是我收到了一个错误 .

unable to load private key

如何使用OpenSSL从PKCS#12商店中提取PEM中的证书?

5 回答

  • 12

    尝试:

    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'
    
  • 1

    您只需提供密码即可 . 您可以使用以下语法在同一命令行中执行此操作:

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

    然后,系统将提示您输入密码以加密输出文件中的私钥 . 如果要导出未加密的私钥(纯文本),请在上面的行中包含“nodes”选项:

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

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

  • 18

    如果你可以使用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())
    
  • 362

    我有一个PFX文件,需要为NGINX创建KEY文件,所以我这样做了:

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

    然后我必须编辑KEY文件并删除所有内容到 -----BEGIN PRIVATE KEY----- . 之后NGINX接受了KEY文件 .

  • 2

    这将与 .pem 文件一起使用,该文件在同一文件中具有私钥和证书(我尝试使用Apple推送通知证书)

    PushNotif.pem 在一个文件中包含私钥和证书)

    $ openssl pkcs12 -export -in PushNotif.pem -inkey PushNotif.pem -out PushNotif.p12输入PushNotif.pem的密码短语:输入导出密码:验证 - 输入导出密码:

    输入密码后,您就可以开始使用了 .

相关问题