使用openssl将pfx转换为pem

使用openssl将pfx转换为pem,openssl,pem,pfx,Openssl,Pem,Pfx,如何使用OpenSSL从PFX文件生成.pemCA证书和客户端证书。您可以使用OpenSSL命令行工具。下面的命令应该可以做到这一点 openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts 如果您希望您的文件受密码保护等,那么还有其他选项 您可以阅读整个文档。在Linux上执行此操作的另一个视角。。。下面是如何

如何使用OpenSSL从PFX文件生成
.pem
CA证书和客户端证书。

您可以使用OpenSSL命令行工具。下面的命令应该可以做到这一点

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts
如果您希望您的文件受密码保护等,那么还有其他选项


您可以阅读整个文档。

在Linux上执行此操作的另一个视角。。。下面是如何做到这一点,从而使生成的单个文件包含解密的私钥,这样HAProxy之类的东西就可以在不提示您输入密码短语的情况下使用它

openssl pkcs12 -in file.pfx -out file.pem -nodes
然后,您可以将HAProxy配置为使用file.pem文件


这是以前版本中的一个编辑,在我意识到-nodes选项只是简单地绕过私钥加密之前,我执行了这些多个步骤。但我把它留在这里,因为它可能会对教学有所帮助

openssl pkcs12 -in file.pfx -out file.nokey.pem -nokeys
openssl pkcs12 -in file.pfx -out file.withkey.pem
openssl rsa -in file.withkey.pem -out file.key
cat file.nokey.pem file.key > file.combo.pem
  • 第一步提示您输入打开PFX的密码
  • 第二步提示您输入密码,并为密钥编写密码短语
  • 第三步提示您输入您刚刚编写的密码短语以存储解密的密码
  • 第四个将所有内容放在一个文件中
  • 然后,您可以将HAProxy配置为使用file.combo.pem文件


    之所以需要两个单独的步骤来指示一个文件有密钥,另一个文件没有密钥,是因为如果您有一个文件既有加密的密钥又有解密的密钥,HAProxy之类的东西在使用它时仍然会提示您键入密码短语。

    尽管其他答案是正确的,并且解释得很透彻,我发现理解它们有些困难。下面是我使用的方法():

    第一种情况:将PFX文件转换为同时包含证书和私钥的PEM文件: 第二种情况:将PFX文件转换为单独的公钥和私钥PEM文件: 将私钥从PFX提取到PEM文件:

    openssl pkcs12 -in filename.pfx -nocerts -out key.pem
    
    导出证书(仅包括公钥):

    从提取的私钥中删除密码(转述)(可选):


    我还没有花时间熟悉openssl,但是pem转换不包括私钥。编辑提供了如何将证书和密钥合并到一个pem文件中的详细信息,这正是我所需要的。在windows系统上,使用type而不是catOn windows,此版本的OpenSSL很容易用于以下情况:上述步骤可以很好地将PFX转换为pem。然而,我还需要做一个额外的步骤:在文本编辑器中打开nokey PEM文件,并将链中的最后一个证书移动到文件的顶部。否则nginx将抛出一个错误,抱怨证书并拒绝使用它们。在这种情况下,您可以重新排序cat命令以将其放在第一位。类似:cat file.key file.nokey.pem>file.combo.pem,除非file.key本身有多个错误的顺序。但无论是哪种情况,您都可能以编程方式重新安排内容。在第一种情况下,即使原始证书没有密码,也会提示我输入密码。这仅在Windows上,当我在“C:\Program Files\Git\usr\bin\OpenSSL.exe”中使用OpenSSL.exe时才起作用。当我使用git bash中的
    openssl
    时,我得到了
    openssl pfx到pem的错误:0D0680A8:asn1编码例程:asn1\u检查\u tlen:error
    openssl pkcs12 -in filename.pfx -nocerts -out key.pem
    
    openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
    
    openssl rsa -in key.pem -out server.key