¿Cómo determinar la cadena de confianza efectiva para cert en MacOS X?

1

Estoy viendo algunos problemas curiosos con la verificación del certificado para un certificado Emisor: Entrust - L1K que se emitió y está en uso (según la inspección del certificado en Chrome y Firefox) para un sitio interno aquí.

  • No veo ningún certificado de Asunto: Entrust - L1K en ninguno de mis llaveros locales, pero los navegadores se conectan alegremente, al menos desde dentro de la empresa.

  • Primero noté que algo andaba mal con algunos scripts de python, luego determiné que openssl no verificaría el certificado del sitio. Tampoco tiene representación en el paquete de certifi cert de python, que supuestamente se mantiene actualizado.

  • (También hay un caso verificado de una persona que puede conectarse sin problemas dentro de la red corporativa pero ve una advertencia de "no se puede verificar" sobre este certificado de Entrust - L1K al conectarse a través de VPN, mismo sistema, sin reinicio ni nada)

Después de descargar un certificado para Entrust - L1K directamente de Entrust con Issuer: Entrust - G2 , puedo construir una cadena de confianza válida enraizada en una CA de Entrust Root:

Entrust Root Certification Authority - G2  (this is present in my keychain)
--> Entrust Certification Authority - L1K  (this is the newly downloaded cert)
    --> Local site                         (this is the cert the browser was presented)

Tenga en cuenta que estoy haciendo esto con openssl y con los archivos cert manipulados en un directorio de trabajo. Solo el certificado de Entrust Root observado está presente en mi llavero.

Tengo varias preguntas en mi mente.

  1. (El principal) ¿Cómo puedo ver la cadena de confianza que hace que mi navegador no se queje cuando me conecto al sitio local, dado que no puedo encontrar certificados en ninguno de mis llaveros que puede construir uno?

  2. ¿Es L1K una nueva sub-autoridad bajo Entrust? El certificado Subject: Entrust - L1K tiene Validity Not Before: Oct 5 19:13:56 2015 GMT . ¿Cómo debería un nuevo certificado como este normalmente abrirse camino hacia los sistemas finales?

  3. ¿Hay algo más que alguna cadena de certificados local que los navegadores del cliente puedan usar para la verificación de certificados, que explique las conexiones felices? ¿Y qué podría explicar el error de verificación del certificado en VPN?

A continuación se muestra la forma de texto del certificado L1K que se obtiene de Entrust manualmente. Como se mencionó anteriormente, este certificado completa la cadena de confianza entre el certificado del sitio y el certificado raíz para Entrust Root Certification Authority - G2 :

$ openssl x509 -in ../entrust_l1k.pem  -text | more
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            0e:e9:4c:c3:00:00:00:00:51:d3:77:85
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2009 Entrust, Inc. - for authorized use only, CN=Entrust Root Certification Authority - G2
        Validity
            Not Before: Oct  5 19:13:56 2015 GMT
            Not After : Dec  5 19:43:56 2030 GMT
        Subject: C=US, O=Entrust, Inc., OU=See www.entrust.net/legal-terms, OU=(c) 2012 Entrust, Inc. - for authorized use only, CN=Entrust Certification Authority - L1K
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):
                    00:da:3f:96:d0:4d:b9:2f:44:e7:db:39:5e:9b:50:
                                    :
                                (elided)
                                    :
                    35:fe:53:19:2f:08:46:c1:2a:b3:1a:62:1d:4e:2b:
                    d9:1b
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Certificate Sign, CRL Sign
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            Authority Information Access: 
                OCSP - URI:http://ocsp.entrust.net

            X509v3 CRL Distribution Points: 
                URI:http://crl.entrust.net/g2ca.crl

            X509v3 Certificate Policies: 
                Policy: X509v3 Any Policy
                  CPS: http://www.entrust.net/rpa

            X509v3 Subject Key Identifier: 
                82:A2:70:74:DD:BC:53:3F:CF:7B:D4:F7:CD:7F:A7:60:C6:0A:4C:BF
            X509v3 Authority Key Identifier: 
                keyid:6A:72:26:7A:D0:1E:EF:7D:E7:3B:69:51:D4:6C:8D:9F:90:12:66:AB
    
pregunta Scott 13.04.2016 - 23:25
fuente

1 respuesta

1

Resuelto. El sitio necesitaba agregar el certificado intermedio al archivo PEM. Pasaba por alto la vista de la cadena de confianza en el navegador que mostraba que estaba obteniendo el certificado intermedio, un paso que no se realizó en los otros casos de uso.

Para responder a mis preguntas:

  1. La cadena de confianza efectiva de hecho era visible al consultar los detalles de seguridad haciendo clic en el icono de candado en la barra de direcciones del navegador y viendo la información del certificado.

  2. No estoy seguro de la historia de Entrust - L1K , pero aquí hay un pequeño detalle. La pregunta de "cómo llega el certificado a los sistemas finales" se ve superada por la respuesta a la parte 3 a continuación.

  3. El certificado intermedio debería se debe proporcionar en el paquete de certificados que el servidor del sitio presenta al navegador del cliente. Como no, mis conexiones de openssl y python estaban fallando, pero los navegadores utilizaron la extensión de certificado "Acceso a la información de la autoridad de certificados" para recuperarla automáticamente, al menos en algunos contextos.

respondido por el Scott 14.04.2016 - 01:44
fuente

Lea otras preguntas en las etiquetas