我已从 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 进行比较,但文件完全相同。
谷歌搜索错误仅表示文件的编码可能以某种方式关闭,但没有具体细节。
编辑(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 的二进制格式。
然后您可以将其转换为 PEM 并单独获取密钥或证书。
如果您在解码时遇到问题,请检查您的文件并删除其中的所有空白行。我们的 ASA 用前导空格保存它们,而 openssl 不喜欢这样。
遇到同样的问题,原来我的证书是双base64编码的......
如果您在 Windows 上执行此操作,您可以尝试使用位于
"C:\Program Files\Git\usr\bin\openssl.exe"
. 这对我有用,在我最初在 Git bash 会话中使用 openssl 时遇到此错误。使用 openSSL.exe
时,我收到了输入 .pfx 密码的提示,这在以前没有发生过。(我还曾一度重新生成原始 .pfx,以防出现一些损坏问题)。