Ssl-Certificate

OpenSSL 無法轉換從 Cisco ASA 55xx 導出的 PKCS12

  • April 25, 2022

我已從 ASA 5510 導出現有證書+密鑰:

asa5510(config)# crypto ca export MYTRUSTSTORE pkcs12 MYPASSWORD

將輸出保存在文件(vpn-cisco.pkcs12)中,現在我試圖將證書和密鑰提取到單獨的文件中,如下所示:

openssl pkcs12 -in cisco-vpn.pkcs12 -nocerts -out privateKey.pem

我收到的錯誤:

139708630054816:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319:
139708630054816:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=PKCS12

openssl pkcs12 -info ...如果我執行或任何其他命令,則會出現同樣的錯誤。

我嘗試再次導出文件並使用 ASDM 而不是 CLI 進行比較,但文件完全相同。

Google搜尋錯誤僅表示文件的編碼可能以某種方式關閉,但沒有具體細節。

編輯(7 年後):我再次遇到了同樣的問題,不得不使用相同的證書維護 ASA 和 Zimbra 設置,並且遇到了我自己的問題作為工作答案。

額外感謝所有額外的輸入,比如需要清理 p12 文件的空行等。

編輯 2: 來自 ASA 的 PKCS12 導出加密私鑰,ZCS 對此不滿意,因此需要刪除密碼,因此首先提取密鑰:

openssl pkcs12 -in cisco-vpn.pkcs12.bin -nocerts -out privateKey.pem

然後刪除密碼:

openssl rsa -in privateKey.pem -out key_no_pass.txt

這很奇怪。我有同樣的問題,發現這個問題沒有答案。然後我做了更多的搜尋,發現了一個yaleman.org文章,上面說他們找到了答案並連結到這個問題。然而這裡沒有答案。追溯修復該問題,為 yaleman 提供完整的支持。

長短:您需要將 pfx 從 Base64 轉換為 openssl 的二進制格式。

$ openssl enc -base64 -d -in certfile.pfx -out converted.pfx

然後您可以將其轉換為 PEM 並單獨獲取密鑰或證書。

$ openssl pkcs12 -in converted.pfx -out bundle.pem -clcerts -nodes

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