¿Cómo pueden los navegadores encontrar y construir una ruta de cadena de confianza alternativa?

8

Teníamos un servidor web que tenía instalados los certificados SSL incorrectos, pero el navegador pudo encontrar otra ruta confiable a una raíz y suministrar la página correctamente a través de HTTPS. También contamos con clientes de software propietario que utilizan SSL fuera de los navegadores que se conectan al mismo servidor pero estas validaciones de SSL han fallado. Mi pregunta es ¿cuál es el mecanismo en la lógica del navegador que le permite encontrar rutas alternativas a una raíz confiable?

    
pregunta user53029 31.07.2014 - 21:34
fuente

2 respuestas

12

En SSL / TLS el servidor debe mostrar su certificado como parte de una cadena. Teóricamente, el servidor debe asegurarse de que la cadena enviada sea correcta, y el cliente tiene "derecho moral" a rechazar la conexión si la cadena exacta enviada por el servidor no puede validarse. Sin embargo, a los clientes se les permite hacer esfuerzos adicionales; Si pueden validar el certificado con otra cadena, entonces está bien continuar.

Por lo tanto, uno no puede culpar formalmente a algunos clientes por no validar el certificado del servidor si el servidor envía una cadena defectuosa.

Cuando un cliente intenta construir una cadena alternativa, utilizará algunos o todos los métodos siguientes:

  • El cliente puede tener certificados de CA intermedios instalados localmente (en el sistema Windows, el almacén de "CA intermedia" está destinado a eso).
  • Los certificados enviados por el servidor pueden reutilizarse (pero quizás no en el mismo orden).
  • El cliente puede tener acceso a algún servidor LDAP o equivalente en el que algunos certificados pueden buscarse por nombre de sujeto (esto puede ocurrir en las configuraciones de Windows / Active Directory). El plan inicial para X.509 era que debería haber un Directorio mundial, como algún tipo de DNS generalizado, pero nunca sucedió.
  • El cliente puede intentar descargar otros certificados de CA intermedios siguiendo la URL que se encuentra en Acceso a la información de la autoridad extensiones de los certificados.

Este último método es el que normalmente funcionará. Un certificado bien emitido contendrá una extensión AIA con una URL que apunta al certificado de la CA que lo emitió. Ese certificado puede contener una extensión AIA que apunta a la CA de nivel superior, y así sucesivamente, hasta la raíz. Mientras todas las URL sean de acceso público, la red está en funcionamiento y ningún administrador del sistema entró en su patética excusa para que una mente bloquee ese mecanismo (desafortunadamente lo he visto), entonces la cadena se reconstruirá con éxito. Los sistemas modernos de Windows lo hacen automáticamente.

Pero recuerde que a los clientes SSL se les permite no comportarse de esa manera. Un punto importante a tener en cuenta es que el seguimiento de URL se basa en HTTP. Un navegador web sabe HTTP; Esa es una especie de característica principal de un navegador. Sin embargo, una aplicación independiente que utiliza alguna biblioteca SSL puede no ser capaz de emitir solicitudes HTTP aleatorias, o simplemente estar dispuesta a hacerlo. Algunas bibliotecas SSL proporcionan el soporte de protocolo pero confían en la persona que llama para que realmente proporcione conectividad de red (la persona que llama abre y opera la conexión TCP, la biblioteca es simplemente la parte computacional). Dependiendo de cómo esté diseñada la aplicación y su implementación de SSL, puede o no tener éxito en enviar los certificados adicionales cuando sea necesario.

Es mucho mejor si el servidor está correctamente instalado en primer lugar.

    
respondido por el Thomas Pornin 31.07.2014 - 21:52
fuente
3

El navegador generalmente almacena en caché los certificados intermedios que han visto una vez. Esto se puede probar si usa Firefox contra un servidor al que le falta un certificado intermedio común. Si el navegador ya ha visto este certificado faltante, permitirá la conexión. Pero, si utiliza un perfil de Firefox nuevo y lo vuelve a intentar, se quejará, ya que el almacenamiento en caché del certificado se realiza por perfil.

En mi opinión, este es un mal comportamiento porque causa un comportamiento poco confiable del navegador. Es muy común que los administradores no se den cuenta de que la configuración de HTTPS se interrumpe cuando las pruebas con su navegador no se quejan porque tienen el certificado intermedio faltante en caché.

    
respondido por el Steffen Ullrich 31.07.2014 - 22:04
fuente

Lea otras preguntas en las etiquetas