¿Por qué Chrome y Firefox reportan un certificado y emisor de servidor diferente al de OpenSSL?

11

Cuando visito https://somesite.org utilizando Chrome o Firefox e inspecciono el certificado del servidor, todo me parece bien.

Veo el certificado del servidor SSL, CN, O, OU que parece coincidir con somesite.org emitido por thawte SSL CA - G2.

Pero (y aquí revelo que soy nuevo en esto) usando

openssl s_client -connect somesite.org:443 -showcerts

Me sale algo muy diferente:

depth=0 C = XX, ST = XXX, L = Strawberry Hills, O = Department
of Misadventure and Zebras, OU = Somesite, CN = www.domz.gov
verify error:num=20:unable to get local issuer certificate
verify return:1

NOTA: OU = Somesite está en desacuerdo con Dept. of Misadventure and Zebras.

Certificate chain 0 s:/C=XX/ST=XXX/L=Strawberry Hills/O=Department of Misadventure and Zebras/OU=Somesite/CN=www.domz.gov i:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-------

Si extraigo el certificado y lo proceso con

openssl x509 -in abnote.pem -text

Obtengo un resultado que confirma s_client resultado.

    
pregunta philcolbourn 20.07.2018 - 14:00
fuente

2 respuestas

17

No estoy seguro de su caso de uso exacto, pero eso es lo que la extensión TLS Server Name aborda con precisión.

En HTTPS, el protocolo de enlace SSL donde el servidor presenta su certificado se produce antes de que el servidor pueda examinar cualquier encabezado HTTP. SNI le permite al cliente enviar el nombre del dominio virtual como parte de la negociación TLS. Esto permite al servidor seleccionar un certificado entre muchos. Por lo tanto, con los clientes y servidores que implementan SNI, un servidor con una sola dirección IP puede servir diferentes nombres de dominio con diferentes certificados.

SNI se agregó a los RFC de Internet del IETF en junio de 2003 a través de RFC 3546, Extensiones de Seguridad de la capa de transporte (TLS). La última versión de la norma es RFC 6066.

Ahora es el estándar de facto, porque en los grandes centros de datos los servidores proxy frontales pueden servir a cientos o miles de sitios, sin hablar de redes de distribución de contenido como Akamai o CloudFront (gracias a Mike Ounsworth por esa parte)

Más detalles en la página referenciada.

Por cierto, openssl puede usar SNI con la opción servername:

openssl s_client -connect somesite.org:443 -servername somesite.org -showcerts

debería ser suficiente para obtener los mismos certificados que obtienen los navegadores

    
respondido por el Serge Ballesta 20.07.2018 - 14:36
fuente
-1

Si está en la red de su empresa, escuela u otra organización, es posible que su navegador esté configurado para usar un servidor proxy web. Busque eso en su navegador o en la configuración de red del sistema.

Si el navegador usa un proxy pero s_client no, s_client puede terminar en algún sitio interno que le indique que configure el proxy, y ese sitio no tendrá el certificado esperado.

Esta respuesta le indica cómo usar un proxy con s_client : openssl s_client utilizando un proxy .

    
respondido por el John Feibusch 20.07.2018 - 21:00
fuente

Lea otras preguntas en las etiquetas