ssl:无法加载证书

ssl : Unable to load certificate

我有 2 个文件 - CSR.csr 和 newkey.key,它们似乎都是 PEM 格式,如下 -

-----BEGIN CERTIFICATE REQUEST-----

MIID....

-----END CERTIFICATE REQUEST-----

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

MI...

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

当我尝试读取 CSR.csr 文件时,出现以下错误:

$ openssl x509 -in CSR.csr -text -noout
unable to load certificate
140518720210760:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:698:Expecting: TRUSTED CERTIFICATE

我读到当输入文件为 DER 格式时会出现此错误,因此我尝试了以下操作 -

$ openssl x509 -inform DER -in CSR.csr -text -noout

但现在我收到错误 -

unable to load certificate
140519053051720:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1320:
140519053051720:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:382:Type=X509

当输入文件已经是 PEM 格式并且尝试以 DER 格式读取它时,似乎会发生此错误。

因为我是 SSL 的新手,所以真的很困惑如何去做。请帮忙!

问题不在于 PEM 与 DER,而是您在需要证书的地方使用证书请求。 PEM header -----BEGIN CERTIFICATE REQUEST----- 清楚地表明了这一点。

要显示证书请求的内容,请使用

openssl req -in CSR.csr -text

显示证书的内容使用

openssl x509 -in CERT.crt -text

在我的例子中,我试图读取我的 cer 文件并收到上述错误

openssl x509 -in CSR.csr -text -noout unable to load certificate 140518720210760:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:698:Expecting: TRUSTED CERTIFICATE

我必须使用 openssl 将其转换为 crt 文件。

openssl x509 -inform DER -in <certname>.cer -out <certname>.crt
openssl x509 -in <certname>.crt -text

Here's 我使用的文档。之后我能够使用 openssl 阅读它

此错误也会发生在不是由 CA 签署的“证书请求”(non-CSR 证书)但来自 Windows PKI 的 x509 常规证书的证书上,格式为“.cer” " 格式

在这种情况下,遵循“Norbert”的回答是解决问题的好方法,将证书转换为“.crt”

可以使用以下方式转储文件后:

openssl x509 -in YOURCERT.crt -noout -text

openssl x509 -in YOURCERT.crt -text