wil*_*wen 48 ssl ssl-certificate
我今天一直在为我的域设置 SSL,并且遇到了另一个问题 - 我希望有人可以阐明..
我不断收到以下错误消息:
[错误] 初始化:无法从文件 /etc/apache2/domain.com.ssl/domain.com.crt/domain.com.crt 读取服务器证书 [错误] SSL 库错误:218529960 错误:0D0680A8:asn1 编码例程:ASN1_CHECK_TLEN:标签错误 [错误] SSL 库错误:218595386 错误:0D07803A:asn1 编码例程:ASN1_ITEM_EX_D2I:嵌套的 asn1 错误
我正在运行 Apache 2.2.16 和 Ubuntu 10.10。我的 .crt 文件有开始和结束标签,并且完全从我收到的确认电子邮件中复制,非常令人沮丧!
干杯!
编辑 >> 尝试验证 .crt 时它似乎不起作用:
>> openssl x509 -noout -text -in domain.com.crt 无法加载证书 16851:error:0906D06C:PEM 例程:PEM_read_bio:no 起始行:pem_lib.c:650:Expecting: Trusted CERTIFICATE
还有>>
>> openssl x509 -text -inform PEM -in domain.com.crt 无法加载证书 21321:error:0906D06C:PEM 例程:PEM_read_bio:no 起始行:pem_lib.c:650:Expecting: Trusted CERTIFICATE
>> openssl x509 -text -inform DER -in domain.com.crt 无法加载证书 21325:错误:0D0680A8:asn1 编码例程:ASN1_CHECK_TLEN:错误标签:tasn_dec.c:1316: 21325:错误:0D07803A:asn1 编码例程:ASN1_ITEM_EX_D2I:嵌套的 asn1 错误:tasn_dec.c:380:Type=X509
编辑>>(顺便干杯帮助)
>> grep '^-----' domain.com.crt -----开始认证----- -----结束证书-----
刚刚给提供证书的公司发了电子邮件,他们回复了>
我已经检查了您提供的 CSR 文件,我可以确保这是正确生成的。您当前遇到的错误是因为您使用错误的命令行来安装 CSR。您需要使用相应的域名称从命令行修改此 domain.com.crt。
Mad*_*ter 55
这些行是否有可能以 ^M 结尾?这是将文件从 Windows 移动到 UNIX 系统时的潜在问题。一种简单的检查方法是vi在“show me the binary”模式下使用,带有vi -b /etc/apache2/domain.ssl/domain.ssl.crt/domain.com.crt.
如果每一行都以 control-M 结尾,就像这样
-----BEGIN CERTIFICATE-----^M
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM^M
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg^M
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x^M
Run Code Online (Sandbox Code Playgroud)
你有一个 Windows 行终止格式的文件,而 apache 不喜欢这些。
您的选择包括再次移动文件,更加小心;或使用dos2unix命令将它们去掉;你也可以在 vi 中删除它们,如果你小心的话。
编辑:感谢@dave_thompson_085,他指出这个答案在 2019 年不再适用。也就是说,Apache/OpenSSL 现在可以容忍 ^M 终止的行,因此它们不会引起问题。也就是说,其他格式错误(在注释中出现的几个不同示例)仍然会导致问题;如果证书已跨系统移动,请仔细检查这些。
小智 25
对于在尝试读取证书签名请求 (CSR) 时出现类似错误的任何人(请注意,OP 正在读取证书):确保使用正确的 OpenSSL 命令。x509用于证书和reqCSR:
openssl req -in server.csr -text -noout
Run Code Online (Sandbox Code Playgroud)
对比
openssl x509 -in server.crt -text -noout
Run Code Online (Sandbox Code Playgroud)
qua*_*nta 20
>> openssl x509 -noout -text -in domain.com.crt
unable to load certificate
16851:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: TRUSTED CERTIFICATE
Run Code Online (Sandbox Code Playgroud)
我怀疑你的证书格式有问题。
运行以下两个命令并为我们提供输出:
openssl x509 -text -inform DER -in domain.com.crt
openssl x509 -text -inform PEM -in domain.com.crt
Run Code Online (Sandbox Code Playgroud)
小智 17
只是绕着这个圈子转了一圈,结果我拿错了证书——例如
SSLCertificateFile /etc/apache2/ssl/server.key
SSLCertificateKeyFile /etc/apache2/ssl/server.crt
Run Code Online (Sandbox Code Playgroud)
代替:
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
Run Code Online (Sandbox Code Playgroud)
如果您收到此错误,请检查一下。
小智 10
就我而言,我发现我的证书有不同的“-”字符。一定是管理员将证书放置到服务器上的复制/粘贴问题,文本编辑器替换了 - 一路上使用特殊的 unicode 字符。
这花了几个小时来诊断,最后我只是猜测,并在 vi 中编辑了证书并删除了现有的“-”字符,然后重新输入它们。
希望这可以帮助某人。
小智 9
就我而言,我遇到了 OP 的错误,因为首先为我创建 .crt 文件的人确实创建了一个.PEM格式的文件,并将其命名为 .crt。
我通过运行以下有用的指南发现了这一点:https : //support.ssl.com/Knowledgebase/Article/View/19/0/der-vs-crt-vs-cer-vs-pem-certificates-and-how - 转换它们
我所要做的就是将我的 .crt 重命名为 .pem,我就大功告成了!该指南指出,来自 OP 问题的错误意味着输入文件已经是 PEM 格式,因此无法尝试将其从 DER 格式转换为 .pem,而且实际上是不必要的。
| 归档时间: |
|
| 查看次数: |
379542 次 |
| 最近记录: |