156

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

4

3 回答 3

231

在 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. 第 2 步会提示您输入该加号,并为密钥设置密码。
  3. 第 3 步提示您输入刚刚制作的密码以存储解密后的密码。
  4. 第 4 个将所有内容放在 1 个文件中。

然后您可以配置 HAProxy 以使用 file.combo.pem 文件。

您需要两个单独的步骤来指示一个带有密钥的文件和另一个没有密钥的文件的原因是,如果您有一个同时具有加密和解密密钥的文件,HAProxy 之类的东西仍然会提示您输入密码它使用它。

于 2013-05-23T21:33:56.467 回答
131

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

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

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

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

您可以在此处阅读整个文档。

于 2013-03-14T17:32:15.467 回答
48

尽管其他答案是正确的并且得到了彻底的解释,但我发现理解它们有些困难。这是我使用的方法(取自这里):

第一种情况:将 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
于 2019-11-30T21:26:14.153 回答