当前位置: 首页 > 知识库问答 >
问题:

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

戚英逸
2023-03-14

我有一本书。密钥文件,当我这样做时

openssl rsa-text-in文件。键

我得到

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文件,当我这样做时

opensslx509-text-in文件。cer

我明白了

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

但是如果像这里指出的那样,我运行这样的命令:

opensslx509-text-inform-DER-in文件。cer

我得到

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

但这似乎对钥匙不起作用,因为当我跑的时候

openssl rsa文本通知DERaaa010101aaa__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

如何获取私钥及其证书?


共有3个答案

漆雕修德
2023-03-14

我的两点:在运行带有根CA证书的openssl命令时,在RHEL7.3中遇到了相同的错误消息。原因是,当从AD服务器下载证书时,编码被选择为DER而不是Base64。一旦为新证书下载选择了正确的编码版本,错误就解决了

希望这对新用户有所帮助:-)

燕宏胜
2023-03-14

您似乎拥有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
顾亦
2023-03-14

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

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

 类似资料:
  • 问题内容: 我有一个.key文件,当我这样做时 我懂了 我也有一个.cer文件,当我这样做时 我懂了 但是,如果按照的指示运行,则应执行以下命令: 我懂了 但这似乎不适用于该键,因为当我运行时 我懂了 如何获得私钥及其证书? 问题答案: 看来您有格式为的证书,而不是。这就是为什么当您提供命令行参数(告诉openssl期望什么样的输入格式)时它可以正常工作的原因。 您的私钥可能使用了相同的编码。看起

  • 我有一本书。密钥文件,它是PEM格式的私钥文件。这个文件不是我做的,但我从某处得到的。 我想看看它的MD5哈希openssl工具,如下面的命令。 但这产生以下误差。 这里有一些. key文件的asn1parse。 还有什么我可以试试的吗?

  • 我正在使用Ruby 2.5.x OpenSSL库研究椭圆曲线。我可以很容易地使用 但是给定一个私钥,我想重新生成公钥。 我知道OpenSSL可以做到这一点,因为命令行允许您这样做,Ruby比特币项目也可以做到这一点。但是Ruby比特币项目使用FFI而不是Ruby提供的接口有自己的OpenSSL接口。 Ruby 2.5.x openssl 库是否没有公开足够的 OpenSSL 接口,以便能够从私钥生

  • a.从存储区提取现有证书密钥: b.从导出的证书中提取私钥: 没有证书与私钥匹配 我错过了什么?为什么我的最后一个命令不合法? 我计划执行“keytool-importkeystore”文件。p12(应该在最后一步中生成)来替换“keystore”中的“一个”privateKeyEntry。正如在如何导入Java keystore中现有的x509证书和私钥以便在SSL中使用中所建议的?。基本上,我

  • 主要的问题是,我对C相当陌生,OpenSSL留档对我来说不够清晰,我尝试过使用读和写rsa键到C中的pem文件,但我不太明白。例如,函数如何创建私有和公共?而从何而来?pcszPassphrase的意义是什么? 我会解释,好像这是某种伪代码,这就是我想做的,粗体部分是我不知道如何做的: 生成私钥和公钥作为十六进制缓冲区(客户端) 基本上,我知道如何处理AES加密/解密和通信协议,反正他们已经实现了

  • 我已经使用openssl生成了一个私钥,并在Terminal/command中执行以下命令: null 所有这些都无法解密我的密钥。下面是我根据这篇文章编写的类[https://stackoverflow.com/questions/35276820/decrypting-an-openssl-pem-encoded-rsa-privest-key-with-java]: 我对安全问题一无所知,所