Ssl

將 .p7b 密鑰轉換為 .pfx

  • August 18, 2016

我有一個 .p7b 格式的 SSL 證書,我需要將其轉換為 .pfx。如果我通過 Windows 證書管理嘗試此操作,則會禁用專家作為 .pfx 的選項。

嘗試使用 openssl 我發現了以下兩個命令來進行轉換:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer

但我不確定第二個命令使用什麼密鑰,或者 CACert.cer 指的是什麼證書。

如何將此密鑰轉換為 .pfx 格式?

PKCS#7 不包括證書/私鑰對的私鑰(密鑰)部分,它通常用於證書分發(例如,作為對 PKCS#10 證書請求的響應,作為分發 S/MIME 證書的一種手段用於加密消息,或驗證簽名消息等)。重要的是要記住,它僅適用於根據定義為公共項目的證書。

PKCS#12 是一個更通用的容器 - 它旨在將私鑰和公共證書部分儲存在一起,以便可以移動它們。它具有受密碼保護的能力,可為密鑰提供一些保護。

PFX 是 PKCS#12 的前身。

您不能(正如 Anitak 指出的那樣)在沒有額外數據(私鑰部分)的情況下從 PKCS#7 轉換為 PKCS#12,因為 PKCS#7 沒有所有數據。

Mark Sutton 指出了您無法導出為 PFX 的原因 - 有問題的證書將其私鑰標記為不可導出。加密服務提供者 (CSP) 不允許移動該密鑰,這是故意的。獲得可導出證書\密鑰對的唯一*方法是,如果原始證書是在設置了可導出標誌的情況下頒發的。也可能沒有與證書關聯的私鑰,但我假設這裡不是這種情況。

Wikipedia 上對各種PKCS 類型進行了很好的總結。

  • 至少唯一合法的方式。取決於 CSP\Crypto 硬體,可能會有一些機制,尤其是對於僅軟體 CSP 的機制,但就我而言,這只是安全漏洞研究的領域,而不是系統管理員。

引用自:https://serverfault.com/questions/83143