我通过电子邮件从我的认证机构收到了一份证书,其开头如下:
-----BEGIN CERTIFICATE-----
MIAGCSqGSIb3DQEHAqCAMIACAQExADALBgkqhkiG9w0BBwGggDCCBWMwggRLoAMC
结尾如下:
14lWAyMfs77oOghZtOxFNfeKW/9mz1Cvxm1XjRl4t7mi0VfqH5pLr7rJjhJ+xr3/
AAAxAAAAAAAAAA==
-----END CERTIFICATE-----
我通过电子邮件收到了它,然后将证书部分复制/粘贴到了 test.cer 文件中(我重复了四遍 - 检查我复制/粘贴的是正确的部分)
当我尝试在 Apache 2 中使用它时,出现以下错误:
[Mon Sep 30 23:15:36.754820 2013] [ssl:emerg] [pid 7544:tid 444] AH02241: Init: Unable to read server certificate from file C:/projects/test-ssl/test.cer
[Mon Sep 30 23:15:36.754820 2013] [ssl:emerg] [pid 7544:tid 444] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Mon Sep 30 23:15:36.754820 2013] [ssl:emerg] [pid 7544:tid 444] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=X509)
[Mon Sep 30 23:15:36.754820 2013] [ssl:emerg] [pid 7544:tid 444] AH02312: Fatal error initialising mod_ssl, exiting.
经过一番研究,我发现原因可能是证书已损坏,因此为了检查它,我使用以下方法进行了测试
C:\Apache24\bin\openssl.exe x509 -in test.cer -text
我得到了类似的错误:
unable to load certificate
8100:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:.\crypto\asn1\tasn_dec.c:1319:
8100:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:.\crypto\asn1\tasn_dec.c:381:Type=X509_CINF
8100:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:.\crypto\asn1\tasn_dec.c:751:Field=cert_info, Type=X509
8100:error:0906700D:PEM routines:PEM_ASN1_read_bio:ASN1 lib:.\crypto\pem\pem_oth.c:83:
我不是 SSL 专家,但我怀疑认证机构(赛门铁克)向我发送了损坏的证书。
知道这个证书可能有什么问题吗? 它可能是我所不知道的其他格式吗?
答案1
尝试将该证书导入到某个 NSS 存储区。例如,导入到使用 NSS 的 Firefox。这是 SSL 的另一种实现(实际上是第一种),您可以看到证书的属性……当然,前提是您导入成功。否则,您得到的是错误的证书。
答案2
确保最后一行最后一个破折号后没有最后的回车符:
AAAxAAAAAAAAAA==
-----END CERTIFICATE-----
并不是
AAAxAAAAAAAAAA==
-----END CERTIFICATE-----
.
(请忽略点:)
答案3
请务必包括
。 - - - -开始 - - -
和
。 - - 结尾 - -
零件与发送给您的完全一样。
还要注意,开始应该是第一行,结束应该是最后一行。周围不应该有空格。最后...如果您在混合使用 Windows 计算机,则换行符 (\n) 可能由 Windows 系统添加了 (\r)。十六进制编辑器可能是检查此问题的最快方法。