我有一个与 Chrome 和其他浏览器完美配合的网站,但我在 CLI 模式下使用 PHP 时遇到一些错误,所以我正在调查它,运行它:
openssl s_client -showcerts -verify 32 -connect dev.carlipa-online.com:443
非常令人惊讶的是,我的 HTTPS 似乎不受信任,Verify return code: 27 (certificate not trusted)
这是原始输出:
verify depth is 32
CONNECTED(00000003)
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=27:certificate not trusted
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = khKDXfnS0WtB8DgV0CAdsmWrXl-Ia9wZ, C = FR, O = *.carlipa-online.com, OU = GT44535187, OU = See www.rapidssl.com/resources/cps (c)12, OU = Domain Control Validated - RapidSSL(R), CN = *.carlipa-online.com
verify return:1
因此GeoTrust Global CA
在系统(Ubuntu 11.10)上似乎不受信任。添加Equifax_Secure_CA
以尝试解决此问题...但是我遇到了这种情况Verify return code: 19 (self signed certificate in certificate chain)
!
原始输出:
verify depth is 32
CONNECTED(00000003)
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify error:num=19:self signed certificate in certificate chain
verify return:1
depth=3 C = US, O = Equifax, OU = Equifax Secure Certificate Authority
verify return:1
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify return:1
depth=1 C = US, O = "GeoTrust, Inc.", CN = RapidSSL CA
verify return:1
depth=0 serialNumber = khKDXfnS0WtB8DgV0CAdsmWrXl-Ia9wZ, C = FR, O = *.carlipa-online.com, OU = GT44535187, OU = See www.rapidssl.com/resources/cps (c)12, OU = Domain Control Validated - RapidSSL(R), CN = *.carlipa-online.com
verify return:1
编辑
看起来我的服务器不信任/不提供 Equifax 根 CA,但是我确实正确地拥有了该文件/usr/share/ca-certificates/mozilla/Equifax...
看起来 GeoTrust 已经重新调整了他们的签名结构。
您要出示的第三个证书(根据 Raj 的回答)是这个:
但是当我用 Windows 客户端打开你的证书时,链解析为这个:
这两个证书共享共同的密码学(因此它们都将验证下属的签名),但您提供的证书是由该 Equifax 证书签署的,而 Windows 决定信任链通向的证书是由 Equifax 签署的。
由于您出示的是 Equifax 签名的证书而不是自签名的证书,因此您没有出示完整的链条。将 Equifax 证书添加到您的网络服务器提供的链中:
现在,这可能会或可能不会解决您的
openssl
命令行客户端的信任问题——您需要确保它正确地找到您系统的可信根存储;您可以使用-CApath
它来确保它指向正确的位置。添加
-CApath RapidSSL_CA_bundle.pem
:在此处下载RapidSSL_CA_bundle.pem。
发布答案而不是评论,因为这对于评论来说太大了。目前没有 ubuntu 来测试,但是从我的 redhat 服务器(rhel 5 update 3)来看链看起来是完整的:
openssl s_client -showcerts -connect dev.carlipa-online.com:443