使用 openssl 将 pfx 转换为 pem

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

492560 次浏览

您可以使用 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 文件。


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

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. 第四个把它们放在一个档案里。

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

为什么你需要两个独立的步骤来指定一个有密钥的文件和另一个没有密钥的文件,是因为如果你有一个既有加密密钥又有解密密钥的文件,像 HAProxy 这样的东西仍然会提示你在使用它时输入密码短语。

尽管其他的答案都是正确的,而且解释得很透彻,我还是发现理解它们有一些困难。下面是我使用的方法(从这里带走) :

第一种情况: 将 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

您可以使用以下命令从. pfx 中提取 ca-bundle、 . crt 和. key。

# Extracting ca-certs..."
openssl pkcs12 -in ${filename}.pfx -nodes -nokeys -cacerts -out ${filename}-ca.crt


# Extracting key file..."
openssl pkcs12 -in ${filename}.pfx -nocerts -out ${filename}.key


# Extracting crt..."
openssl pkcs12 -in ${filename}.pfx -clcerts -nokeys -out ${filename}.crt


# combine ca-certs and cert files
cat  ${filename}.crt ${filename}-ca.crt > ${filename}-full.crt


# Removing passphrase from keyfile"
openssl rsa -in ${filename}.key -out ${filename}.key

链接: https://gist.github.com/mediaupstream/a2694859b1afa59f26be5e8f6fd4806a