Problemas con los certificados SSL intermedios y el proxy SSL

1

Actualmente estoy implementando un proxy SSL y me he encontrado con algunos problemas relacionados con los certificados.

Tenemos una "Compañía Raíz CA" fuera de línea, y una "Compañía intermedia CA" en línea. En el proxy, he generado un "proxy intermedio CA", que nuevamente ha sido firmado por nuestra "Compañía intermedia CA".

Todos los navegadores confían tanto en nuestra CA raíz como en nuestra CA emisora.

Cuando voy a un sitio SSL a través del proxy, recibo una advertencia de certificado. Al estudiar la cadena de certificados en el navegador, veo:

  • certificado intermedio de proxy
    • certificado de sitio "falso"

Si importo la CA intermedia proxy en mi almacén de certificados, todo funciona bien. La cadena de certificados se verá así cuando vaya al sitio:

  • raíz de la empresa CA
    • empresa CA intermedia
      • proxy intermedio CA
        • certificado de sitio "falso"

¿Por qué los navegadores no confían en los certificados emitidos por la CA intermedia de proxy?

    
pregunta sk0yern 15.10.2013 - 18:45
fuente

1 respuesta

2

El navegador solo puede usar el certificado que conoce. En el caso de los certificados de servidor SSL, hay tres métodos mediante los cuales el navegador obtendrá los certificados necesarios para construir una cadena desde una raíz en la que el navegador confía, hasta el certificado para validar (en su caso, el "falso"):

  • El navegador puede tener una copia local de los certificados (en una tienda llamada "CA intermedia" o algo así).
  • El navegador puede seguir la URL que se encuentra en los certificados. Un certificado puede tener una extensión Authority Information Access , que puede apuntar (con una URL) a una lugar donde se puede encontrar el certificado para el emisor del certificado que contiene la extensión.
  • Se supone que un servidor SSL debe enviar su certificado como parte de una cadena completamente desarrollada.

La descarga automática funciona solo mientras la URL esté presente en los certificados y se pueda acceder a los servidores correspondientes; además, para evitar problemas desagradables de gallina y huevo, dicha URL será HTTP, no HTTPS. Sin embargo, no todos los navegadores harán esta descarga. Depende del navegador y también del sistema operativo y de su configuración. Algunos navegadores rechazarán utilizar cualquier otra cosa que no sea la cadena exacta enviada por el servidor.

Entonces, mi suposición es que su proxy, que actúa como un servidor SSL, no envía una cadena completa. Envía el certificado "falso" y la "CA intermedia de proxy", pero no la "CA intermedia de la empresa". Por lo tanto, el navegador carece de este último certificado y no puede construir una cadena completa.

Para verificar esto, use OpenSSL (la herramienta de línea de comandos):

openssl s_client -connect www.aservername.com:443

Esto imprimirá (entre otra información) los nombres del sujeto y del emisor para todos los certificados en la cadena tal como los envía el servidor.

De forma alternativa, ejecute alguna herramienta de monitoreo de red (por ejemplo, Wireshark ) para ver el mensaje SSL Certificate del servidor, que contiene el Cadena de certificados desde el servidor.

    
respondido por el Tom Leek 15.10.2013 - 19:58
fuente

Lea otras preguntas en las etiquetas