OpenSSL 無法轉換從 Cisco ASA 55xx 導出的 PKCS12
我已從 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