OpenSSL 无法转换从 Cisco ASA 55xx 导出的 PKCS12

dya*_*sny 5 openssl ssl-certificate cisco-asa

我已从 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
Run Code Online (Sandbox Code Playgroud)

如果我运行openssl pkcs12 -info ...或任何其他命令,同样的错误。

我尝试再次导出文件并使用 ASDM 而不是 CLI 进行比较,但文件完全相同。

谷歌搜索错误只是说文件的编码可能以某种方式关闭,但没有具体细节。

小智 9

这很奇怪。我有同样的问题,发现这个问题没有答案。然后我进行了更多搜索并找到了yaleman.org帖子,上面说他们找到了答案并链接到这个问题。然而这里没有答案。追溯修复,对耶鲁大学的完整道具。

长短不一:您需要将 pfx 从 Base64 转换为 openssl 的二进制格式。

$ openssl enc -base64 -d -in certfile.pfx -out converted.pfx
Run Code Online (Sandbox Code Playgroud)

然后您可以将其转换为 PEM 并单独获取密钥或证书。

$ openssl pkcs12 -in converted.pfx -out bundle.pem -clcerts -nodes
Run Code Online (Sandbox Code Playgroud)

  • 如果这对你不起作用,那么除非你传递了 `-A` 标志,否则 `openssl base64` 会丢弃任何超过 1024 个字符的行。 (3认同)