我通过电子邮件从我的证书颁发机构收到了一个以这样开头的证书:
-----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 方面的专家,但我怀疑证书颁发机构 (Symantec) 向我发送了损坏的证书。
知道这个证书有什么问题吗?它可能是我不知道的不同格式吗?
确保在最后一行的最后一个破折号之后没有 FINAL CARRIAGERETURN:
并不是
(请忽略点:)
尝试将该证书导入某个 NSS 存储。例如使用 NSS 的 Firefox。这是 SSL 的其他实现(实际上是第一个),您可以看到证书的属性...当然,如果您成功导入。否则你得到了一些错误的证书。
一定要包括
. - - - -开始 - - -
和
. - - 结尾 - -
部分与发送给您的完全相同。
另请注意,开始应该是第一行,结束应该是最后一行。周围不应有空白。最后......如果您正在处理混合中的Windows机器,则换行符(\ n)有可能由Windows系统添加(\ r)。十六进制编辑器可能是最快的检查方法。