无法打开 SSL 私钥 [预期:可信证书]

Unable to open SSL private key [Expecting: TRUSTED CERTIFICATE]

我使用 Let's Encrypt 生成了 SSL 证书,他们生成了文件:

cert.pem | chain.pem | fullchain.pem | privkey.key | privkey.pem

使用以下命令我可以成功打开所有文件除了privkey.keyprivkey.pem:

openssl x509 -in [filename] 

这是错误信息:

unable to load certificate 140505945014720:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE

Some articles 建议我们需要使用以下命令转换为 .der 扩展名,但仍然存在相同的错误 ('unable to load'):

openssl x509 -in privkey.pem -outform der -out privkey.der

私钥不是证书,x509 是证书。如果您愿意,请参阅 https://www.openssl.org/docs/man1.1.1/man1/x509.html 了解有关 x509 可以做什么的信息。

要查看私钥,您需要pkey
https://www.openssl.org/docs/man1.1.1/man1/openssl-pkey.html

Some articles suggest that we need to convert to .der extension

可能这样解决了具有相同错误消息的不同问题。它会在任何时候 openssl x509 尝试读取无效输入时显示:

$ openssl x509  <<<"not a cert"
unable to load certificate
140736021758920:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:697:Expecting: TRUSTED CERTIFICATE

未来的读者,注意不要追鸿雁。该特定消息基本上意味着“提供的证书无效”,但如果您搜索它,您会在网上看到很多关于如何修复 your cert 的信息,这在每一个案例。因此,如果您看到此错误,您必须真正放慢速度并查看发生了什么。 x509 某些证书格式必须更改为不同的格式,这是绝对正确的。但是所有的错误都是一样的。

郑重声明,文件名“扩展名”在 unix 命令行中基本上没有意义。 openssl x509 不会基于最后一个 . 之后的文件名部分,大多数其他程序也不会(一个值得注意的例外是 vim,如果启用,它使用它来猜测语法突出显示)。但是,如果您想从 PEM 转换为 DER 或任何其他文件格式,那不是重命名文件,而是更改其内容 - 很可能是另一个 openssl 调用。重要的不是你给它们起什么名字,而是里面有什么。