谷歌证书正确的CA

信息安全 tls 证书 证书颁发机构 谷歌 x.509
2021-08-30 22:15:47

我查看https://www.google.com.ua/的证书

在此处输入图像描述

所以我想,当通过 cURL 请求时,如果我指向CURLOPT_CAINFO这些证书(GeoTrust Global CA以及Google Internet Authority G2捆绑或其他),谷歌证书的验证将通过。但唯一这样做的 CA 是Equifax Secure CA(通过 git's 的简单枚举发现它CA bundle)。有人可以解释为什么会这样吗?非常感谢。

UPD:这不仅是谷歌的行为,另一个网站的行为也是如此,所以我想要么我误解了某些东西(这很可能),要么显示了一些错误的信息(再次,为什么会这样)

1个回答

这很可能是一个过时的“桥梁”,现在通向错误的地方。

此证书有两个有效的信任链。GeoTrust Global CA 有一个根证书,从 2002 年开始有效,在当前的 Windows/IE 和 Firefox 商店(和 Java)中;以及 Equifax Global CA 下该 CA 的“交叉签名”证书,如下所示:

Data:
    Version: 3 (0x2)
    Serial Number: 1227750 (0x12bbe6)
Signature Algorithm: sha1WithRSAEncryption
    Issuer: C=US, O=Equifax, OU=Equifax Secure Certificate Authority
    Validity
        Not Before: May 21 04:00:00 2002 GMT
        Not After : Aug 21 04:00:00 2018 GMT
    Subject: C=US, O=GeoTrust Inc., CN=GeoTrust Global CA
    Subject Public Key Info: <snipped: same as root>
   X509v3 extensions:
        X509v3 Authority Key Identifier:
            keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:98:90:9F:D4
        X509v3 Subject Key Identifier:
            C0:7A:98:68:8D:89:FB:AB:05:64:0C:11:7D:AA:7D:65:B8:CA:CC:4E
        X509v3 Basic Constraints: critical
            CA:TRUE
        X509v3 Key Usage: critical
            Certificate Sign, CRL Sign
        X509v3 CRL Distribution Points:
            Full Name:
              URI:http://crl.geotrust.com/crls/secureca.crl
        X509v3 Certificate Policies:
            Policy: X509v3 Any Policy
              CPS: https://www.geotrust.com/resources/repository
<snip signature>

这显然是一个“桥梁”证书,通常在创建重命名(此处)或新 CA 根并希望临时利用旧 CA 根的现有信任时使用;Equifax 根从 1998 年开始有效,所以在 1999 年和 2000 年有很多客户会知道 Equifax 根而不是 GeoTrust 根。12年后它应该已经过时了。

运行“openssl s_client”确认 www.google.com.ua 在 SSL 握手中提供了自己的证书、Google Internet Authority G2 中间证书和桥接证书。IE、FF 和 Java 都足够聪明,可以忽略网桥并使用它们内部存储的 GeoTrust 根。curl 使用的 OpenSSL 不是,或者至少现在还不是;因此你必须告诉 curl 给 OpenSSL Equifax 根。(OpenSSL 1.0.2 版本,目前处于测试阶段,宣布在证书链验证领域进行了增强,我还没有详细研究过。)

编辑 3/13:我无法评论我的答案(!)所以在这里添加。正如我所说,GeoTrust Global CA 有两个证书:一个根证书和一个“桥”。

IE/Windows 和 FF DO有 GeoTrust 根;您已经在 IE 或 FF 的证书路径中看到它打开网页,或者您可以使用 InternetOptions/Content/Certificates/TrustedRoots 和 Tools/Options/Advanced/Certificates/Authorities 直接查看信任库。两者都有 Equifax 根,但不要在这里使用它。IE 和 FF 都显示使用的认证路径即使它与服务器发送的不同;这可能在一种方式中是“错误的”,但在另一种方式中可能是“正确的”。

根证书始终是自签名的;这对于成为根是必要的(并不总是用于锚,但将其放在一边)。GeoTrust 根证书是一个根。GeoTrust 网桥证书不是根证书,它链接到作为根的 Equifax 根证书。而且,Equifax 根是 curl + openssl 需要的一个。

编辑 9/01: https ://knowledge.geotrust.com/support/knowledge-base/index?page=content&id=AR1426&actp=search&viewlocale=en_US&searchid=1283360269668确认这是返回 Equifax 的桥梁证书。

更新 2017/03/28:首先,OpenSSL 1.0.2 确实添加-trusted_first了使用 GeoTrust 根(如果存在)并忽略网桥证书。其次,这现在更重要,因为 Equifax 根已从 Mozilla/NSS 信任库中删除,因此许多客户端使用的 curl-project CAfile,请参阅https://serverfault.com/a/841071/216633