我有一个.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
...
还有什么我可以尝试的吗?
答案 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)
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
扩展名即可。
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。