119

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

 ...

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

4

15 回答 15

107

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

于 2019-01-03T17:01:05.613 回答
67

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

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

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

最后,它起作用了!

于 2015-07-31T00:14:35.987 回答
43

您的 .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 应该是正确的。

更多详情,您可以点击这里

于 2018-12-25T10:23:00.870 回答
9

创建 CA 证书

openssl genrsa -out privateKey.pem 4096
openssl req -new -x509 -nodes -days 3600 -key privateKey.pem -out caKey.pem
于 2018-03-25T17:42:35.853 回答
7
> 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在编码之间切换。

于 2014-04-17T03:55:14.787 回答
6

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

于 2020-03-11T10:15:47.460 回答
4

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

于 2017-03-20T10:59:41.597 回答
2

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

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

于 2018-06-06T19:41:30.713 回答
1

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

于 2020-01-03T09:26:44.453 回答
0

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

于 2020-08-06T17:56:43.983 回答
0

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

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

于 2020-10-06T19:57:40.233 回答
0

我收到了 SSL 证书 HTTPCS 的私钥和公钥的 RTF 文件。我用密码制作.pfx的方法是:将rtf私钥文件(privateKey.rtf)(带有免费在线转换器)转换为纯文本格式:privateKey.txt(不要将文本从-----BEGIN PRIVATE KEY-----to复制/粘贴-----END PRIVATE KEY-----到a新文本文件,它不起作用)在 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 等。祝您好运

于 2021-07-17T19:47:47.290 回答
-1

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

于 2020-06-07T19:05:47.900 回答
-2

在我的情况下,其他答案似乎都不正确,但是我在这里找到了真正的答案

我的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-----

WhileDER是一种二进制编码格式。

于 2020-08-13T21:49:03.020 回答
-2

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

于 2021-03-24T06:08:32.123 回答