无法使用 openssl 获取私钥(无起始行:pem_lib.c:703:Expecting: ANY PRIVATE KEY)

新手上路,请多包涵

当我这样做时,我有一个 .key 文件

openssl rsa -text -in file.key

我明白了

unable to load Private Key
140000419358368:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY


我还有一个 .cer 文件,当我这样做时

openssl x509 -text -in file.cer

我明白了

unable to load certificate
140387178489504:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE


但是,如果如此处所指出的 我会运行如下命令:

openssl x509 -text -inform DER -in file.cer

我明白了

Certificate:
    Data:
        Version: 3 (0x2)
        Some more information
        ...
-----BEGIN CERTIFICATE-----
MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvcNAQEF
...
-----END CERTIFICATE-----

但这似乎不适用于密钥,因为当我运行时

openssl rsa -text -inform DER -in aaa010101aaa__csd_10.key

我明白了

unable to load Private Key
140004844304032:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1337:
140004844304032:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:849:
140004844304032:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:769:Field=version, Type=RSA
140004844304032:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
140004844304032:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1337:
140004844304032:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:849:
140004844304032:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:769:Field=version, Type=PKCS8_PRIV_KEY_INFO

如何获取私钥及其证书?

原文由 helado 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 4.1k
2 个回答

看起来您有 --- 格式的证书,而不是 PEM DER 格式。这就是为什么当您提供 -inform PEM 命令行参数(它告诉 openssl 预期的输入格式)时它可以正常工作的原因。

您的私钥很可能使用相同的编码。看起来 openssl rsa 命令也接受 -inform 参数,所以试试:

 openssl rsa -text -in file.key -inform DER

PEM 编码文件是一种纯文本编码,类似于:

 -----BEGIN RSA PRIVATE KEY-----
MIGrAgEAAiEA0tlSKz5Iauj6ud3helAf5GguXeLUeFFTgHrpC3b2O20CAwEAAQIh
ALeEtAIzebCkC+bO+rwNFVORb0bA9xN2n5dyTw/Ba285AhEA9FFDtx4VAxMVB2GU
QfJ/2wIRANzuXKda/nRXIyRw1ArE2FcCECYhGKRXeYgFTl7ch7rTEckCEQDTMShw
8pL7M7DsTM7l3HXRAhAhIMYKQawc+Y7MNE4kQWYe
-----END RSA PRIVATE KEY-----

DER 是二进制编码格式。

更新

有时密钥以 PKCS#8 格式(可以是 PEM 或 DER 编码)分发。试试这个,看看你得到了什么:

 openssl pkcs8 -in file.key -inform der

原文由 larsks 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 Windows 上使用 openssl 时,我遇到了“期望:任何私钥”错误(Ubuntu Bash 和 Git Bash 有同样的问题)。

问题的原因是我使用 UTF8 将密钥和证书文件保存在记事本中。以 ANSI 格式重新保存这两个文件解决了这个问题。

原文由 Aaron Queenan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题