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

我有一个。密钥文件是 PEM 格式的私钥文件。这份文件不是我做的,但我从某个地方拿到的。

我希望看到它的 MD5散列与 openssl 工具,如下面的命令。

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 文件的一些解析。

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


...

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

402942 次浏览
> 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在编码之间切换。

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

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

还有

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

终于成功了!

删除. key 文件开始处的任何空格。

创建 CA 证书

openssl genrsa -out privateKey.pem 4096
openssl req -new -x509 -nodes -days 3600 -key privateKey.pem -out caKey.pem

我在 Windows10上,我用 视窗1252编码保存我的密钥,它对我很有用。关于另一个 Stack Overflow 问题,有些人用 带 BOM 的 UTF-8修复了这个问题。

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

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

# file server.key

输出“ server.key: UTF-8 Unicode (with BOM) text”意味着它是一个纯文本,而不是一个密钥文件。正确的输出应该是“ server.key: PEM RSA private key”。

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

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

New _ server. key 应该是正确的。

有关详细信息,可以单击 给你

在记事本 + + 中打开密钥文件并验证编码。如果上面写的是 UTF-8-BOM,那么就改成 UTF-8。保存文件并重试。

可能私钥本身不在文件中,我也面临同样的问题,但问题是文件中没有私钥。

决议在我这边。更改编码为 UTF8没有 BOM

今天遇到了同样的问题,并且注意到当 owner/group of file 不是正在运行的读取 key 的应用程序时会发生这种情况。也许这也是你的问题。

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

在我的例子中,没有一个答案是正确的,但是我找到了真正的答案 给你

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

多亏了

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是一种二进制编码格式。

在我们的示例中,导致问题的原因是我们试图使用的私钥是用密码加密的。

在使用 openssl 命令行工具使用私钥之前,我们必须使用 ssh-keygen -p解密私钥。

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

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

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 将询问密码,为证书创建自己的密码,然后就可以使用。将于 SOAPUI 国际信息系统设置中使用的 pfx。. 祝你好运