一尘不染

无法使用openssl获取私钥(无起始行:pem_lib.c:703:预期:任何私钥)

linux

我有一个.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

如何获得私钥及其证书?


阅读 2171

收藏
2020-06-03

共1个答案

一尘不染

看来您有DER格式为的证书,而不是PEM。这就是为什么当您提供-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-----

While DER是二进制编码格式。

更新资料

有时,密钥以PKCS#8格式(可以是PEM或DER编码)分发。尝试一下,看看会得到什么:

openssl pkcs8 -in file.key -inform der
2020-06-03