如何使用OpenSSL从PFX文件生成.pem
CA证书和客户端证书。
答案 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
然后,您可以配置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):
openssl pkcs12 -in filename.pfx -out cert.pem -nodes
将私钥从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