¿Qué le sucede al navegador de un usuario si se reemplaza un certificado SSL a mitad de sesión?

8

A la luz de los navegadores modernos que eliminan gradualmente los certificados de seguridad firmados con el algoritmo hash SHA1, estamos ocupados reemplazando todos nuestros certificados SHA1 por SHA2. En general, podríamos simplemente reemplazar los certificados para estas aplicaciones web principalmente de uso interno en la noche o el fin de semana, cuando había poco o ningún tráfico.

¿Qué pasaría si, sin saberlo, estuviera en medio de una sesión cifrada y se reemplazara el certificado del dominio?

Para estar seguros, les informamos a nuestros clientes que podrían asumir que los usuarios a mitad de sesión durante este cambio podrían ver una interrupción de su sesión y la posible pérdida de cualquier dato que aún no esté almacenado en la base de datos. Si estaba en la mitad de la sesión durante un reemplazo de certificado, ¿podría suponer que cuando cargué la página siguiente, después de reemplazar el certificado, mi navegador vería un certificado firmado diferente al que se estableció con mi sesión y causaría que la sesión " asustarse". Esperaría que todos los navegadores aborden esta situación de manera similar, pero por favor, ilumíneme si me equivoco.

He pasado bastante tiempo buscando más detalles sobre cómo los navegadores lidiarían con este escenario, pero no he tenido mucha suerte en encontrar información general o técnica. Tengo mucha curiosidad y he decidido publicar esta pregunta con la esperanza de obtener una respuesta que responda a la Q de manera concisa, con referencia a algunas fuentes creíbles para validar.

Dallas
fuente

Respuestas:

7

... mi navegador vería un certificado firmado diferente al que se estableció mi sesión y provocaría que la sesión se "volviera loca".

Desde la perspectiva de un webmaster, y sin entrar en detalles sobre " cómo funciona SSL " (que se discutirá mejor en Seguridad de la Información ) ...

La clave de sesión ya no coincidiría, por lo que el servidor o el navegador del cliente anularían la conexión. El navegador del cliente luego haría otra solicitud de cualquier recurso en la siguiente página no recibida, lo que abriría una nueva conexión, restableciendo el protocolo de enlace SSL, el certificado, los intercambios de claves y la clave de sesión nuevamente (como se discutió brevemente en la parte inferior aquí )

Dado que el nuevo certificado SSL se emitiría para el mismo dominio, los usuarios probablemente no notarían nada, ya que solo el certificado cambiaría (es decir, el bloqueo verde aún se mostrará), que los usuarios generalmente no ven de todos modos, especialmente entre páginas en El mismo sitio.


Sin embargo, lo que quizás no esté considerando es que cuando instale el nuevo certificado SSL, tendrá que configurar y reiniciar su servidor de todos modos, por lo que las sesiones se cerrarían y los navegadores no recibirían nada ...

Por lo tanto, sugeriría redirigir temporalmente todo el tráfico a una página de "Mantenimiento" utilizando una redirección 302 , con una notificación anticipada publicada en su sitio que indique la hora en que se realizará el mantenimiento y durante cuánto tiempo el sitio no estará disponible.

Una alternativa a la redirección sería enviar un código de respuesta del servidor HTTP 503 Servicio no disponible con un   campo de respuesta de encabezado HTTP Retry-After para indicar cuándo volvería a estar disponible el servidor.

Por último, pero no menos importante, si tiene más de un servidor para el front-end del sitio, puede instalar el certificado en otro servidor y redirigir nuevas conexiones a ese mientras actualiza los otros servidores. Puede verificar las conexiones existentes en Apache aquí e IIS aquí para ayudar con eso, si aún no utiliza una configuración a prueba de fallas o de equilibrio de carga.

dan
fuente
Los certificados están en un equilibrador de carga en el frente ... por lo que no hay interrupción del servicio y no se necesita una redirección 503 / temp.
Dallas
Entonces, si estuviera en la página 5 de un flujo de trabajo de 10 páginas ... ¿mi sesión mantendría la información ya ingresada en las páginas 1-5, y continuaría en la página 6 con el nuevo certificado, o el restablecimiento de la conexión perdería todas las variables de sesión y me iniciaría? de nuevo en la página 1 fresco?
Dallas
Eso depende de cómo esté codificada su aplicación web. Debería estar rastreando la ID de sesión para el usuario (almacenada en una cookie, campo de formulario, URL, etc.), que es diferente de la sesión SSL / TLS . Entonces, si hay una interrupción en la conexión (que puede ocurrir normalmente), los datos de la sesión del usuario permanecerán durante un período de tiempo hasta que hagan otra conexión. En el extraño caso de que no se rastreen los ID de sesión, debe descargar nuevas conexiones a otro servidor y esperar a que se completen las conexiones existentes o al tiempo de espera antes de desconectar ese servidor para actualizar su certificado SSL.
dan
Pido disculpas por la mala redacción. Lo que quería decir es si una sesión tiene problemas cuando la próxima conexión proviene de un certificado diferente al que se estableció con la sesión. ¿A la sesión no le importa? Creo que un certificado diferente tendría algún efecto en la reanudación de una sesión, pero tengo la impresión de que estás diciendo que a la sesión no le importa la conexión. No sé cuál es la diferencia entre la sesión SSL y la "sesión de usuario". Tenía la impresión de que la ID de sesión que rastreamos es la ID de sesión SSL / TLS, que también pensé que era la misma que la sesión del usuario.
Dallas
Creo que está mezclando un poco la terminología: el servidor genera el ID de sesión y se utiliza para rastrear al usuario a través de solicitudes posteriores, ya que HTTP no tiene estado . Todas las conexiones de socket TCP pueden terminar, por lo que depende de la aplicación rastrear al usuario cuando lo hacen, lo que se hace utilizando una ID de sesión . Por ejemplo: inicie sesión de forma segura en un banco u otro sitio seguro, haga clic en algunos enlaces, luego desactive su tarjeta nic, luego actívela y haga clic en otro enlace ... aún se iniciará sesión mientras su ID de sesión es rastreada por sus solicitud.
dan