2011-07-25 100 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文件提供的密碼。

第三個命令將讓您指定證書的加密密碼。這是您在使用證書時要輸入的內容。