这实际上适用于使用这个证书的其他一些服务,但是Apache这样做的方式在比较测试结果时是最明显和最矛盾的。
我们在https://webmail.lightspeed.ca网站上有一个通配符证书。Web浏览器给我们的客户端一个绿色锁,GeoTrust的CryptoReport at https://cryptoreport.geotrust.com/checker/告诉我,我们的证书安装正确。然而,当我尝试使用openssl s_client -connect webmail.lightspeed.ca:443时,我得到了错误Verify return code: 20 (unable to get local issuer certificate)
这就是我们的Apache配置对于SSL的情况:
SSLEngine on
SSLCertificateFile /mailhome/webmail.lightspeed.ca/ssl.cert
SSLCertificateKeyFile /mailhome/webmail.lightspeed.ca/ssl.key
SSLCACertificateFile /etc/ssl/certs/GeoTrust_DV_SSL_CA-G3.pem虽然我知道连接是加密的,但很明显,这条错误消息也意味着我没有被完全验证为我说的是谁。当我们应用这些相同的证书来表示我们的SMTP或POP服务器时,这是有问题的,因为一些客户端(如Outlook )对此问题非常关注。例如,http://www.checktls.com/perl/TestReceiver.pl的测试不喜欢这样,我们得到了错误Cert NOT VALIDATED: unable to get local issuer certificate。我觉得这很奇怪,因为GeoTrust_DV_SSL_CA-G3.pem文件是我们的中间CA证书。这是Geotrust的CA,用于我们特定类型的通配符证书。
对我来说,这只不过是一个令我恼火的原因。你的帮助将不胜感激。
发布于 2016-05-18 19:18:43
当您使用浏览器或使用各种在线工具进行测试时,您使用预先配置的信任锚(根CA证书),而openssl运行的则是不同的信任锚集,通常是由您的发行版定义和分发的。
您需要使用openssl选项告诉-CAfile <filename>您的信任锚位于何处。
如果openssl不信任您网站的信任锚,那么您将需要从CA下载它,然后使用-CAfile选项将其传递给openssl。一旦您这样做了,openssl将信任整个链,并停止提供错误消息。
https://serverfault.com/questions/777593
复制相似问题