我有一个.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
但是,如果指向here,我运行如下命令:
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
如何获取私钥及其证书?
答案 0 :(得分:11)
您似乎拥有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-----
虽然DER
是二进制编码格式。
<强>更新强>
有时密钥以PKCS#8格式(可以是PEM或DER编码)分发。试试这个,看看你得到了什么:
openssl pkcs8 -in file.key -inform der
答案 1 :(得分:8)
我遇到了“期待:任何私密钥匙”。在Windows上使用openssl时出错(Ubuntu Bash和Git Bash有同样的问题)。
问题的原因是我使用UTF8在记事本中保存了密钥和证书文件。以ANSI格式重新保存这两个文件解决了这个问题。
答案 2 :(得分:2)
在执行openssl pkcs12 -export -out cacert.pkcs12 -in testca/cacert.pem
时,我收到以下消息:
无法加载私钥140707250050712:错误:0906D06C:PEM 例程:PEM_read_bio:无起始行:pem_lib.c:701:期待:任何 私钥“
通过提供密钥文件和命令来解决这个问题。该开关为-inkey inkeyfile.pem
答案 3 :(得分:1)
我的两分钱: 在运行带有根CA证书的openssl命令时,在RHEL7.3中遇到了相同的错误消息。原因是,从AD服务器下载证书时,编码被选为DER而不是Base64。为新证书下载选择正确版本的编码后,错误已解决
希望这有助于新用户:-)