将pfx格式转换为p12

问题描述 投票:0回答:8

我需要将

.pfx
格式证书(从 Windows MMC)导出到
.p12
以在其他应用程序中使用。我找不到办法做到这一点。

谁能推荐一个方法吗?

certificate ssl-certificate
8个回答
278
投票

.p12
.pfx
都是 PKCS #12 文件。我是不是错过了什么?

您是否尝试过将导出的

.pfx
文件重命名为具有
.p12
扩展名?


28
投票

我在使用 openconnect 处理 .pfx 文件时遇到了问题。重命名并没有解决问题。我使用 keytool 将其转换为 .p12 并且成功了。

keytool -importkeystore -destkeystore new.p12 -deststoretype pkcs12 -srckeystore original.pfx

在我的例子中,新文件 (new.p12) 的密码必须与 .pfx 文件的密码相同。


12
投票

如果您正在寻找带有 UI 的快速手动流程。我总是使用 Mozilla Firefox 从 PFX 转换为 P12。首先将证书导入 Firefox 浏览器(选项 > 隐私和安全 > 查看证书... > 导入...)。安装后,通过从证书管理器中选择证书名称来执行导出以创建 P12 文件,然后单击备份...并输入文件名,然后输入密码。


5
投票

这更多的是jglouie回应的延续。

如果您使用 openssl 将 PKCS#12 证书转换为公钥/私钥 PEM 密钥,则无需重命名该文件。假设该文件名为 cert.pfx,以下三个命令将创建一个公共 pem 密钥和一个加密的私有 pem 密钥:

openssl pkcs12 -in cert.pfx     -out cert.pem     -nodes -nokeys
openssl pkcs12 -in cert.pfx     -out cert_key.pem -nodes -nocerts
openssl rsa    -in cert_key.pem -out cert_key.pem -des3

前两个命令可能会提示输入导入密码。这将是随 PKCS#12 文件提供的密码。

第三个命令将让您指定证书的加密密码。这是您在使用证书时将输入的内容。


2
投票

运行此命令将

.cert
文件更改为
.p12
:

openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt 

其中

server.key
是服务器密钥,
server.cert
是 CA 颁发证书或自签名证书文件。


2
投票

就我而言,我想导入从 Entrust 导出的

.pfx
并将其导入到
gpgsm
gpgsm
不喜欢那个PFX:

$ gpgsm --import name.pfx
gpgsm: directory '/home/me/.gnupg' created
gpgsm: keybox '/home/me/.gnupg/pubring.kbx' created
gpgsm: data error at "pkcs5PBES2-params", offset 134
gpgsm: error at "bag-sequence", offset 49
gpgsm: error parsing or decrypting the PKCS#12 file
gpgsm: total number processed: 0

Paul Chan 的上述答案有效(使用 Firefox),但我想要一个命令行解决方案。

受到其他答案的启发,我只是尝试使用

openssl pcks12
进行往返,并且它有效:

# Convert pfx to pem
$ openssl pkcs12 -in name.pfx -out name.pem
# Convert pem to p12
openssl pkcs12 -export -in name.pem -out name.p12
$ gpgsm --import name.p12
gpgsm: 2456 bytes of RC2 encrypted text
# ...
gpgsm: total number processed: 3
gpgsm:               imported: 2
gpgsm:       secret keys read: 1
gpgsm:   secret keys imported: 1

1
投票

首先我们有证书.PFX文件

Step1:(提取私钥)

openssl pkcs12 -in certificate.pfx -nocerts -out private.key -passin pass:123123 -passout pass:123123

第2步:(创建P12文件)

openssl pkcs12 -export -out ewallet.p12 -inkey private.key -in certificate.cer -passin pass:123123 -passout pass:123123

0
投票

似乎旧版加密算法已在 openssl 中删除,但仍在 gpsm 中使用。这意味着您必须在使用 openssl 转换密钥时显式重新启用它们:

openssl pkcs12 -in input.pfx -out output.pem
openssl pkcs12 -export -in output.pem -out output.p12 -legacy
© www.soinside.com 2019 - 2024. All rights reserved.