certificados de Google CA correctos [cerrado]

5

Veo certificados de enlace

Así que pensé, cuando solicito a través de cURL, si apunto con CURLOPT_CAINFO a esos certificados ( GeoTrust Global CA y Google Internet Authority G2 en un paquete o lo que sea), se pasará la validación del certificado de Google. Pero la única CA que lo hace es el Equifax Secure CA (lo descubrió por simple enumeración de CA bundle de git). ¿Podría alguien explicar por qué es así? Muchas gracias.

UPD: no es solo el comportamiento de google, otro sitio también se comporta de esa manera, así que supongo que malinterpreté algo (lo cual es probable) o que se muestra información incorrecta (nuevamente, ¿por qué sucede esto?)

    
pregunta zogby 12.03.2014 - 13:20
fuente

1 respuesta

5

Probablemente este sea un "puente" obsoleto que ahora conduce al lugar equivocado.

Hay dos cadenas de confianza válidas para este certificado. Existe un certificado raíz para GeoTrust Global CA, válido desde 2002, que se encuentra en las tiendas actuales de Windows / IE y Firefox (y Java); y también un certificado "firmado" para esa CA bajo Equifax Global CA de la siguiente manera:

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>

Aparentemente, se trata de un certificado de "puente", que se usa a menudo cuando se crea una nueva raíz CA (renombrada) o aquí, y quiere aprovechar temporalmente la confianza existente de una raíz CA más antigua; La raíz de Equifax es válida desde 1998, por lo que en 1999 y 2000 hubo muchos clientes que conocerían la raíz de Equifax y no la raíz de GeoTrust. 12 años después debería estar obsoleto.

La ejecución de 'openssl s_client' confirma que www.google.com.ua está proporcionando en el protocolo de enlace de SSL su propio certificado, el certificado intermedio G2 de Google Internet Authority y el certificado de puente. IE, FF y Java son lo suficientemente inteligentes como para ignorar el puente y usar la raíz de GeoTrust que tienen almacenada internamente. OpenSSL, que utiliza el rizo, no lo es, o al menos no todavía; por lo tanto, debes decirle a curl que le dé a OpenSSL la raíz de Equifax. (Se anuncia que la versión OpenSSL 1.0.2, actualmente en versión beta, tiene mejoras en el área de validación de la cadena de certificados, que aún no he visto en detalle).

EDITAR 3/13: no puedo comentar mi respuesta (!), así que agregué aquí. Como ya he dicho, Hay DOS certificados para GeoTrust Global CA: una raíz y un "puente".

IE / Windows y FF DO tienen la raíz de GeoTrust; ya lo vio en la ruta de certificación en IE o FF con la página web abierta, o puede buscar directamente en los almacenes de confianza con Opciones de Internet / Contenido / Certificados / TrustedRoots y Herramientas / Opciones / Avanzado / Certificados / Autoridades. Ambos también tienen la raíz de Equifax, pero no la utilicen aquí. Tanto IE como FF muestran la ruta de certificación utilizada a pesar de que difiere de lo que el servidor envió ; eso puede ser "incorrecto" en una forma de mirar pero "correcto" en otra.

Un certificado raíz siempre es autofirmado; eso es necesario para ser una raíz (no siempre para un ancla, pero deje eso a un lado). El certificado de raíz de GeoTrust es una raíz. El certificado de puente de GeoTrust no es una raíz, enlaza con el certificado de raíz de Equifax que es una raíz. Y, de nuevo, la raíz de Equifax es la que necesita curl + openssl.

EDIT 9/01: enlace confirma que se trata de un certificado de puente de regreso a Equifax.

ACTUALIZACIÓN 2017/03/28 : en primer lugar, OpenSSL 1.0.2 agregó -trusted_first , que utiliza la raíz de GeoTrust si está presente e ignora el certificado de puente. En segundo lugar, esto es ahora más importante porque la raíz de Equifax se ha eliminado del almacén de confianza de Mozilla / NSS y, por lo tanto, el archivo de CA-proyecto de rizo utilizado por muchos clientes, consulte enlace .

    
respondido por el dave_thompson_085 13.03.2014 - 07:43
fuente

Lea otras preguntas en las etiquetas