无法加载私钥。 (PEM例程:PEM_read_bio:无起始行:pem_lib.c:648:期望:任何私钥)

时间:2013-08-27 07:58:17

标签: openssl private-key

我有一个.key文件,它是PEM格式的私钥文件。我没有制作这个文件但我从某个地方得到了这个。

我想用openssl工具看下它的MD5哈希,如下面的命令。

openssl rsa -in server.key -modulus -noout

但这会产生以下错误。

unable to load Private Key
13440:error:0906D06C:PEM routines:PEM_read_bio:no start line:.\crypto\pem\pem_lib.c:648:Expecting: ANY PRIVATE KEY

这是.key文件的一些asn1parse。

openssl asn1parse -in server.key
0:d=0  hl=4 l= 603 cons: SEQUENCE
4:d=1  hl=2 l=   1 prim: INTEGER           :00
7:d=1  hl=3 l= 129 prim: INTEGER           :C141201603899993919CBAA56985E9C7
C6A2AF713A02F5FE88D38CEFBED9304599689280B84B0AB577A9719CA20DDA1246A894AF397A2C57
EE5A582B036CC367E3667454DCD82DBDBF187C35FE39F61C71B517DDDF576F5471B4EC2E045E0F9D
619F5616C4E832F00CBD0DBF41B4BA3CBC4B4B603AE1FE61965917DA732E0DEF
139:d=1  hl=2 l=   3 prim: INTEGER           :010001
144:d=1  hl=3 l= 128 prim: INTEGER           :1687B9AE67562CEDEBDD7A531B84CDB7
093CE138519B93C34B7F626076FF0A262B16EA71904ACB6251A39307C04ADE202055BA13DD9F1539
6123EE408183361A9BC08B9413FA360EA928E48CC3F52B33ACF2980758F02BA2139F652F30A257C2
2E45D7C25835FC4D22B9ECECC12AB632318D4F47E1EBDAD9781B96BCFF03A2D1

 ...

还有什么我可以尝试的吗?

16 个答案:

答案 0 :(得分:37)

我将PEM文件的页眉和页脚更改为

-----BEGIN RSA PRIVATE KEY-----

-----END RSA PRIVATE KEY-----

最后,它有效!

答案 1 :(得分:11)

在Notepad ++中打开密钥文件并验证编码。如果显示UTF-8-BOM,则将其更改为UTF-8。保存文件,然后重试。

答案 2 :(得分:6)

> I have a .key file which is PEM formatted private key file.
> ...
> Here's some asn1parse of the .key file...

asn1parse看起来没问题让我相信它的不是 PEM编码。


  

还有什么我可以尝试的吗?

因为它似乎是ASN.1,请尝试:

$ openssl rsa -in server.key -inform DER -modulus -noout

注意-inform DER在编码之间切换。

答案 3 :(得分:5)

您的.key文件包含非法字符。您可以像这样检查.key文件:

# file server.key

输出“ server.key:UTF-8 Unicode(带BOM)文本”表示它是纯文本,而不是密钥文件。正确的输出应为“ server.key:PEM RSA私钥”。

使用以下命令删除非法字符:

# tail -c +4 server.key > new_server.key

new_server.key应该正确。

有关详细信息,您可以单击here,谢谢您的发帖。

答案 4 :(得分:5)

我这边的决心。将编码更改为不带BOM的UTF8

答案 5 :(得分:4)

删除.key文件开头的所有空格。

答案 6 :(得分:3)

创建CA证书

c:\mycert>openssl genrsa -out privateKey.pem 4096
c:\mycert>openssl req -new -x509 -nodes -days 3600 -key privateKey.pem -out caKey.pem

答案 7 :(得分:1)

我在Windows 10上,我用 Windows1252 编码保存了我的密钥,它对我有用。在另一个StackOverflow问题上,有些人用 UTF-8和BOM 来解决这个问题。

换句话说,它可能是文件编码。

答案 8 :(得分:1)

文件中可能没有私钥本身。我也遇到过同样的问题,但是问题是文件中没有私钥。

答案 9 :(得分:1)

如果您尝试使用公用密钥而不是专用密钥来创建证书,则可能会发生这种情况。您应该使用私钥

答案 10 :(得分:0)

今天有同样的问题,并且注意到当文件所有者/文件组不是正在运行的读取密钥的应用程序时,就会发生这种情况。也许也是您的问题。

答案 11 :(得分:0)

就我而言,其他答案似乎都不正确,但是我找到了真正的答案here

我的id_rsa文件已经是PEM格式,我只需要在文件名中添加.pem扩展名即可。

Thanks to

openssl rsa -inform参数的可能选项是以下之一:PEM DER

PEM编码的文件是纯文本编码,看起来像 喜欢:

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

DER是二进制编码格式。

答案 12 :(得分:0)

在我们的案例中,导致问题的原因是我们尝试使用的私钥已通过密码加密。

我们必须先使用ssh-keygen -p解密私钥,然后才能在openssl命令行工具中使用私钥。

答案 13 :(得分:0)

我收到了 SSL 证书 HTTPCS 的私钥和公钥的 RTF 文件。 对我来说用密码制作 .pfx 的方法是: 将 rtf 私钥文件 (privateKey.rtf)(使用免费在线转换器)转换为纯文本格式:privateKey.txt(不要将文本从 -----BEGIN PRIVATE KEY----- 复制/粘贴到 -----END PRIVATE KEY----- 到新的文本文件,它不起作用) 在 Nodepad++ 中打开转换后的纯文本文件并将编码更改为 UTF-8 而不是 UTF-8 BOM 并将扩展名更改为 .key。 保存 在证书文件夹中运行 Openssl 控制台:

pkcs12 -export -out C:\Users\user\Documents\CertFolder\Cert.pfx -inkey C:\Users\user\Documents\CertFolder\privateKey.key -in C:\Users\user\Documents\CertFolder\certificate.crt

openssl 会询问密码,为您的证书创建自己的密码,然后您的 .pfx 将用于 IIS 设置、SOAPUI、MMC 等。 祝你好运

答案 14 :(得分:-2)

为什么不使用cetificate bot

  

yum install epel-release

     

yum install certbot-nginx

获取证书

  

certbot --nginx -d example.com -d www.example.com

答案 15 :(得分:-3)

如果您的证书来自godaddy,您只需将编码从UTF-8 (BOM) 更改为UTF 8 并将文件重命名为private.key。