¿Los navegadores web almacenan en caché los certificados SSL?

26

¿Algún navegador web almacena en caché los certificados del servidor SSL? Por ejemplo, si cambio el certificado SSL en un servidor web, ¿todos los navegadores web recogerán el nuevo certificado cuando se conecten a través de SSL, o es posible que puedan tener un certificado obsoleto?

Estoy pensando en el escenario cuando un certificado SSL expira y es reemplazado por uno nuevo en el servidor web.

Lorin Hochstein
fuente
Supongo que el navegador verifica la fecha en el certificado para ver si necesita obtener uno más nuevo, como lo hace para todo lo demás, pero no estoy seguro.
soandos
Eche un vistazo aquí imperialviolet.org/2011/05/04/pinning.html sobre "fijación de certificados" y en la iniciativa HSTS whis está relacionado con el antiguo dev.chromium.org/sts
Shadok
1
A partir de 2019, mi Chrome 75 está almacenando en caché certificados SSL
Fabian Thommen

Respuestas:

10

Bueno, la respuesta de RedGrittyBrick es correcta, pero en realidad no responde la pregunta. La pregunta era, si los navegadores lo hacen, no si deberían o deberían hacerlo.

Por lo que escuché, tanto MSIE como Chrome realmente hacen certificados de caché, y no los reemplazan cuando obtienen una nueva versión siempre que la anterior sea válida. No entiendo por qué lo hacen, ya que reduce la seguridad.

tuexss
fuente
La respuesta actualmente aceptada es bastante clara. Indica específicamente que, no , los navegadores no almacenan en caché los certificados. A medida que señala que el panorama cambió, las razones por las que Chrome lo hace, está bien documentado, sería bueno que vincule esas razones. Dado que el certificado sigue siendo válido, no "reduce" la seguridad que no tendría sentido.
Ramhound
3
Lo baja, porque no puede reemplazar una vieja clave SHA-1 con una nueva, porque la anterior todavía es válida, y Chrome ignora la nueva, si entendí todo bien. Por lo tanto, no hay forma de forzar un cambio a un estándar de seguridad más alto, por lo que "baja" en un sentido relativo al no permitir que lo empuje más alto. Al igual que la inflación no reduce el valor designado de su dinero, sino su valor de mercado real.
tuexss
55
+1 Luego del fiasco de la cadena SHA1 / SHA2 mixta StartSSL , está claro que Chrome en Windows está realmente almacenando en caché certificados intermedios, posiblemente indefinidamente. Chrome ignorará cualquier nuevo certificado intermedio enviado por el servidor. Sin embargo, no está claro si el almacenamiento en caché está marcado por la identidad del certificado del servidor o la identidad del certificado intermedio y qué constituye exactamente esa identidad.
Robert Važan
3
Enfrentamos el problema hoy, tanto Chrome como Firefox muestran diferentes certificados en la ventana normal (certificado antiguo) y en el modo de incógnito (uno correcto). Las utilidades de línea de comando como curl o openssl informan el certificado correcto, por supuesto. Se solucionó borrando la memoria caché del navegador (ctrl + shift + del): "cookies y otros datos del sitio" para Chrome y "datos del sitio web sin conexión" para firefox.
anilech
1
Al menos la versión actual de Firefox (66.0) en OSX parece mantenerse en su caché con bastante fuerza. Ayer he actualizado un certificado TLS para mi sitio web y tanto CLI opensslcomo Chromium me muestran el nuevo certificado. Firefox me muestra el anterior a pesar de volver a cargar con la memoria caché deshabilitada, borrando toda la memoria caché y los datos sin conexión y reiniciando el navegador.
Tad Lispy
20

No. Consulte la descripción general de IBM SSL

  1. El cliente SSL envía un mensaje de "saludo al cliente" que enumera información criptográfica, como la versión SSL y, en el orden de preferencia del cliente, los CipherSuites admitidos por el cliente. El mensaje también contiene una cadena de bytes aleatoria que se utiliza en cálculos posteriores. El protocolo SSL permite que el "cliente hola" incluya los métodos de compresión de datos admitidos por el cliente, pero las implementaciones SSL actuales no suelen incluir esta disposición.

  2. El servidor SSL responde con un mensaje de "saludo de servidor" que contiene el CipherSuite elegido por el servidor de la lista proporcionada por el cliente SSL, el ID de sesión y otra cadena de bytes aleatoria. El servidor SSL también envía su certificado digital . Si el servidor requiere un certificado digital para la autenticación del cliente, el servidor envía una "solicitud de certificado del cliente" que incluye una lista de los tipos de certificados admitidos y los nombres distinguidos de las autoridades de certificación (CA) aceptables.

  3. El cliente SSL verifica la firma digital en el certificado digital del servidor SSL y verifica que el CipherSuite elegido por el servidor sea aceptable.

...

El resumen de Microsoft es similar. El apretón de manos TLS también es similar a este respecto.

En el paso 2 no parece haber una manera para que el cliente diga "no se moleste en enviar un certificado de servidor, usaré mi caché".

Tenga en cuenta que hay varios tipos de certificados, cliente, servidor y CA. Algunos de estos están en caché.

RedGrittyBrick
fuente
Pregunta original modificada para aclarar que se trata de un certificado de servidor.
Lorin Hochstein
Esto no es cierto, y asumir que no hay caché debido a una descripción general de cómo funciona SSL excluye el almacenamiento en caché es una justificación bastante mala. youtube.com/watch?v=wMFPe-DwULM
Evan Carroll
El único caché que podría usarse es para verificaciones de validez, aunque eso es una compensación de seguridad.
Daniel B
0

No estoy seguro de si mi entrada ayudará de alguna manera, pero esto es lo que acabo de experimentar: tengo un sitio web en azul con un dominio personalizado. Intenté acceder a él con https en cromos antes de configurar el enlace SSL para mi nombre de dominio. Chrome me decía que el sitio no está protegido, lo cual tiene mucho sentido (ERR_CERT_COMMON_NAME_INVALID) Pero después de cargar mi certificado y configurar el enlace SSL en azul, seguía recibiendo el mismo error. En esta etapa, al abrir una nueva ventana de navegador privado (o usar otro navegador), el https funcionaba bien.

Pero nunca pude hacerlo funcionar en mi sesión abierta de Chrome. Intenté borrar el estado SSL, el mismo resultado. Funcionó después de reiniciar Chrome por completo.

Probablemente fui engañado por algo, pero casi parecía que el certificado estaba en caché ...

Etienne
fuente
Ese error implicaría que accedió al sitio con un URI que era diferente de lo que estaba en el CN. ¿Realmente cambiaste el URI para acceder al sitio en Chrome después de configurar el enlace?
Seth
No, lo único que cambié en ese momento fue la encuadernación. Cuando pregunté por primera vez a https, se sirvió con el certificado azure ssl predeterminado, pero todavía me estaba sirviendo después de cambiar el enlace con el certificado correcto en Azure.
Etienne
Como dijo que configuró el enlace SSL de su dominio, ¿eso significa que accedió al servidor usando su dominio desde el principio o no? El error indicaría que hubo una diferencia entre la URL que usó y la URL para la que fue el certificado. A eso me refería. Además, la configuración real de su servidor podría ser muy importante si piensa en HSTS y demás.
Seth
1
Paso 1: sitio web publicado en azul. En esta etapa, tiene una URL azul predeterminada y un certificado predeterminado. Paso 2: configure el dominio personalizado para la aplicación web, ahora mysite.com apunta correctamente al sitio. El certificado SSL de mysite.com no está configurado en esta etapa. Paso 3: en este punto, cuando intento https el sitio, recibo un error de seguridad que dice que el certificado no coincide (y tiene mucho sentido) Paso 4: instalo el certificado SSL para Mysite.com en azul y TODAVÍA aparece la advertencia de seguridad de Chrome. NO ocurre en ningún otro navegador o si abro un navegador privado.
Etienne
1
Paso 5: reinicio Chrome y ahora (y solo ahora) se sirve mi sitio web con el certificado SSL correcto. Por lo tanto, mi conclusión es que efectivamente hubo un problema de almacenamiento en caché del certificado
Etienne
-1

Hay planes de algunos desarrolladores de navegadores para implementar dicho sistema de detección para detectar ataques como el ataque a Diginotar en 2011.

Pero por el momento AFAIK no existe tal sistema activo en los navegadores actuales. Por lo tanto, no tiene que pensar en esta situación cuando actualice su certificado de servidor.

Robert
fuente