¿Cómo puede un certificado SSL funcionar solo para algunos clientes?

11

Mi proveedor de alojamiento recientemente volvió a emitir y reinstaló un certificado SSL para mi dominio, después de que dejaron que el anterior caducara por error.

Ahora puedo volver a navegar por el sitio web a través de HTTPS, y también lo es mi host, al igual que otros usuarios.

Sin embargo, algunos usuarios (al menos una docena de cientos) todavía reciben Your connection is not securemensajes de error en diferentes navegadores y plataformas. (Está resultando difícil diagnosticar un problema que no puedo reproducir).

Entiendo que diferentes navegadores usan diferentes listas de Autoridades de Certificación (CA).

  1. ¿Cómo es que un usuario que ejecuta la misma versión de Firefox que yo (45.0.1 en OS X) recibe un SEC_ERROR_UNKNOWN_ISSUERerror (solo para mi sitio) mientras no lo estoy? ¿Qué lo hace posible? Dicho usuario borró su caché y reinició su computadora portátil.

Realicé una verificación SSL en digicert.com . El resultado es este:

El certificado SSL no es confiable

El certificado no está firmado por una autoridad confiable (verificando en el almacén raíz de Mozilla). Si compró el certificado de una autoridad confiable, probablemente solo necesite instalar uno o más certificados intermedios. Póngase en contacto con su proveedor de certificados para obtener ayuda para hacer esto para su plataforma de servidor.

  1. ¿Cómo es que puedo conectarme al sitio sin error SSL si este es el caso?
Fabien Snauwaert
fuente
1
My hosting provider has recently re-issued and re-installed an SSL certificate for my domain, after they let the old one expire by mistake.- ¿Cómo es que dejaste esta responsabilidad en sus manos?
joeqwerty
3
Simplemente porque no soy un administrador de sistemas, les alquilo un servidor dedicado administrado. (Para la pequeña historia de fondo, escribo material y código de aprendizaje de idiomas, además de administrar el negocio, por lo que hacer sysadmin también, aunque interesante, sería demasiado).
Fabien Snauwaert
77
@joeqwerty: ¿Porque es su trabajo? Literalmente les está pagando para que resuelvan estas cosas por él.
Carreras de ligereza en órbita
@LightnessRacesinOrbit: Esa es una suposición que no hice, de ahí la pregunta.
joeqwerty
1
bugzilla.mozilla.org/show_bug.cgi?id=399324 es el informe de error que solicita soporte para descargar automáticamente certificados intermedios en Firefox. La discusión (hace 8 años) se reduce a "¡IE lo hace!" / "¡Al diablo con IE, el RFC dice que es opcional!" / "¿Has oído hablar del principio de robustez?" / "¡La configuración de su servidor es mala y debería sentirse mal!"

Respuestas:

22

La cadena de certificados de su certificado está incompleta. Lo más probable es que su proveedor no haya podido instalar algún certificado intermedio al instalar el nuevo certificado.

La mayoría de las veces, dichos certificados intermedios son proporcionados por la autoridad SSL, para proporcionar soporte para algunos navegadores y sistemas operativos más antiguos. Esa es la razón, que si bien funciona para usted, no funciona para algunos de sus clientes.

Una utilidad realmente excelente para verificar si hay problemas de SSL con su sitio web es la prueba del servidor SSL de SSLlabs . Como puede ver en el enlace de arriba, no solo tiene un problema de cadena aquí, sino que también el algoritmo de firma utilizado para crear su certificado es débil, su servidor web aún es vulnerable al ataque POODLE y aún admite RC4, que es también considerado inseguro ...

No quiero decir nada en contra de su proveedor de servidor web, pero en su posición los enviaría por correo, para que solucionen todos estos problemas lo antes posible o se cambien a otro proveedor ...

s1lv3r
fuente
Gracias, eso es muy útil. Por pura curiosidad, ¿alguna idea de por qué un cliente en OS X y la misma versión de Firefox que el mío está recibiendo un SEC_ERROR_UNKNOWN_ISSUERerror mientras yo no lo estoy? ¿Podría ser su versión del sistema operativo es diferente?
Fabien Snauwaert
1
@FabienSnauwaert Sí, si se desplaza hacia abajo hasta "Handshake Simulation", la prueba SSLLabs intentará simular varias combinaciones de versiones de SO / navegador. El navegador no maneja las conexiones SSL totalmente por sí mismo, sino que depende en parte de la implementación del sistema operativo. Así que definitivamente la versión del sistema operativo marca la diferencia.
s1lv3r
3
No se trata solo de que los clientes puedan tener diferentes listas de AC. También es posible que algunos de los clientes almacenen en caché los certificados intermedios, de modo que un sitio con un certificado intermedio faltante pueda funcionar si el navegador ha visitado previamente un sitio que ha configurado correctamente ese certificado intermedio.
kasperd
El sitio SSLlabs es una buena herramienta. Gracias por la referencia
Parapluie
12

Para que un certificado sea confiable, debe estar firmado por una entidad en la que confíe su combinación de navegador / SO, o que a su vez haya sido firmada por dicha entidad. Esto generalmente lo realiza una CA raíz de confianza que firma una CA intermedia, y la CA intermedia firma su certificado. Esto crea una cadena, como esta:

  1. Root CA que es confiable para su computadora, y firma
  2. CA intermedia, que firma
  3. Su certificado, que solo es confiable debido a la cadena que conduce de nuevo a la CA raíz.

El problema aquí es con el certificado de CA intermedio. Para asegurarse de que todos puedan validar la cadena hasta la CA raíz, su proveedor debe incluir el certificado intermedio en la configuración de su servidor. En este caso, no lo han hecho.

La razón por la que funciona para algunos usuarios es que tienen el certificado intermedio en su propio "almacén de confianza". En esos casos, aceptarán su certificado porque ya confían en el intermediario. Pero en el caso de que sus visitantes tengan un sistema operativo / navegador diferente, no tienen el certificado intermedio, por lo que tendrían que obtenerlo de su servidor web, y su servidor web no lo entrega, por lo que no tienen forma de verificarlo

Jenny D
fuente
Gracias, me ayuda a ver el problema claramente ahora. ¿Hay algún truco para que los usuarios agreguen el certificado intermedio a su propio "almacén de confianza" mientras esperan que mi host arregle el certificado? por ejemplo: ¿visitar otro sitio SSL que depende de él o algo así?
Fabien Snauwaert
1
@FabienSnauwaert No hay truco, desafortunadamente. Simplemente visitar un sitio que tenga el mismo certificado intermedio no ayudará; tendrían que descargar realmente el certificado y agregarlo manualmente a su navegador. Creo que este certificado en particular se incluye en los navegadores más nuevos: funciona en Firefox 45.0.1 pero no en 43.0.4, por lo que se incluyó en algún lugar entre esas dos versiones. Entonces, si pudiera hacer que sus clientes actualicen sus navegadores, eso ayudaría.
Jenny D
44
Los navegadores modernos almacenan en caché los certificados intermedios de @JennyD, por lo que es bastante probable que funcione en un sitio diferente que use el mismo intermediario. Sin embargo, que en realidad no es algo que uno debe estar preguntando de sus usuarios ... (ver: bugzilla.mozilla.org/show_bug.cgi?id=629558 , sslmate.com/blog/post/chrome_cached_sha1_chains )
Bob
0

Si estaba utilizando la fijación de clave pública HTTP y su proveedor le dio un nuevo certificado, es posible que las claves públicas ya hayan cambiado. Estas claves se guardan en el navegador del cliente durante el período que especificó.

Jarvis
fuente