使用openssl将pfx转换为pem

时间:2013-03-14 15:37:24

标签: openssl pem pfx

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

3 个答案:

答案 0 :(得分:162)

在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
  1. 第一步提示您输入密码以打开PFX。
  2. 第二步提示您加上该密钥以及密钥的密码短语。
  3. 第3步提示您输入刚刚存储解密的密码。
  4. The 4th将所有内容合并为一个文件。
  5. 然后,您可以配置HAProxy以使用file.combo.pem文件。

    你需要两个单独的步骤来指示带有密钥的文件而另一个没有密钥的原因是因为如果你有一个既有加密密钥又有解密密钥的文件,那么像HAProxy这样的东西仍会提示你输入使用它时的密码。

答案 1 :(得分:89)

您可以使用OpenSSL命令行工具。以下命令应该可以解决问题

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

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts

如果您希望文件受密码保护等,则还有其他选项。

您可以阅读整篇文档here

答案 2 :(得分:3)

尽管其他答案是正确的并得到了详尽的解释,但我发现在理解它们时有些困难。这是我使用的方法(Taken from here):

第一种情况:要将PFX文件转换为同时包含证书和私钥的PEM文件:

openssl pkcs12 -in filename.pfx -out cert.pem -nodes

第二种情况:要将PFX文件转换为单独的公钥和私钥PEM文件,

将私钥从PFX提取到PEM文件:

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