2011-07-25 79 views
72

我需要将.pfx格式的证书(从windows mmc)导出到.p12才能用于其他应用程序。我找不到办法做到这一点。任何人都可以提出一种方法将pfx格式转换为p12

回答

133

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

您是否尝试将输出.pfx文件重命名为.p12 extension?

+7

让你想知道为什么它们是两个不同的文件扩展名,如果它们真的是同一个东西。 – BrainSlugs83

+13

有两个文件扩展名的原因是历史的。 PFX是微软的扩展,而P12是Netscape。 这两种格式现在都已经被修改为相同的,这意味着开发人员可以使用.NET System.Security.Cryptography.X509Certificates命名空间来处理这两种格式。有关更多信息,请参阅[此处](https://embeddedtechwire.wordpress.com/2010/09/23/pfx-or-p12-certificates-what-is-the-difference/)。 – SnapShot

+3

PKCS#12文件的文件扩展名是“.p12”或“.pfx”。微软的“PFX”受到了作为最复杂的密码协议之一的严厉批评。 PKCS#12是微软“PFX”的继任者。 PKCS#12是由RSA Laboratories发布的称为公钥密码标准(PKCS)的标准族之一。 – AKS

4

我在使用openconnect的.pfx文件时遇到了问题。重命名没有解决问题。我使用keytool将其转换为.p12,它工作。

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

在我的情况下为新的文件(new.p12)密码必须是相同的密码.pfx文件。

+0

即使我为两者使用了相同的密码,也无法正常工作。得到错误“keytool错误:java.io.IOException:无效的密钥库格式” –

+0

它为我工作,你保存了几天的调查....谢谢你 –

0

运行此命令更改.cert文件.p12

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

哪里server.key是服务器密钥和server.cert是CA证书的问题或自签证书文件。

1

这更像是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文件提供的密码。

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