当前位置: 首页 > 面试题库 >

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

云新知
2023-03-14
问题内容

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

如何获得私钥及其证书?


问题答案:

看来您有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


 类似资料:
  • 我有一本书。密钥文件,当我这样做时 我得到 我也有一个朋友。cer文件,当我这样做时 我明白了 但是如果像这里指出的那样,我运行这样的命令: 我得到 但这似乎对钥匙不起作用,因为当我跑的时候

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

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

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

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

  • 问题内容: 我有以下几行代码可从Android上的密钥存储中获取私钥 一切正常,除了当操作系统从Android 5.1.1升级到Android 6.0.1时,第3行将抛出第一个执行代码。但是之后它将再次正常运行。现在我的解决方法是执行该行两次。同时,我也想知道是否有更好的方法来避免该异常。 更新资料 异常跟踪 问题答案: 什么时候发生此错误,为什么? 回答: 加载Android密钥并从密钥库存储公