Pregunta ¿Por qué Chrome odia tanto los certificados autofirmados?


Estoy ejecutando una pequeña aplicación web en una instancia de EC2 y quiero que algunos amigos puedan usarla. También quiero hacer que use HTTPS, solo por razones de seguridad básica (evite el espionaje de paquetes siempre que sea posible). Por supuesto, estoy usando un certificado autofirmado, porque mi presupuesto para este proyecto es de $ 0. Pero Chrome lanza una página de advertencia cuando intenta visitarla:

Tu conexión no es privada

Los atacantes pueden estar tratando de robar su información de [...]   (por ejemplo, contraseñas, mensajes o tarjetas de crédito).   NET :: ERR_CERT_AUTHORITY_INVALID

Este servidor no pudo probar que es [...]; su certificado de seguridad no es confiable en el sistema operativo de su computadora. Esto puede ser causado por una configuración incorrecta o por un atacante que intercepta su conexión.

¿No es verdad que "cualquier encriptación es mejor que no encriptar"? En HTTP no cifrado, también podría estar intentando robar información, y no tengo que probar nada sobre la identidad de mi servidor, Y mi comunicación se puede leer en texto sin formato mediante la detección de paquetes, pero Chrome no muestra ninguna advertencia allí. ...

¿Lo que da? ¿Por qué Chrome odia tanto los certificados autofirmados? ¿Por qué no coloca una pequeña caja roja sobre el ícono del candado en lugar de darme una página de advertencia de dos clics?


5
2017-07-18 06:07


origen


Respuestas:


Esta pregunta no es específica de cromo. Firefox y probablemente otros navegadores se comportan de manera similar y en los últimos años las advertencias incluso se volvieron más estrictas. Quejarse de estas advertencias muestra más una comprensión faltante del papel de los certificados en HTTPS.

Con HTTPS uno espera cifrado, es decir, comunicación privada entre el navegador y el servidor sin que nadie olfatee o manipule los datos transferidos. Al comienzo del cliente y el servidor de cifrado intercambian las claves de cifrado, de modo que uno puede cifrar los datos y el otro puede descifrar los datos. Si algún hombre en el medio se las arregla para manipular el intercambio de claves de manera que tenga control sobre las claves de cifrado, la conexión seguirá estando cifrada pero no será privada. Por lo tanto, es esencial que el intercambio de claves esté protegido y esto se hace con certificados. Solo con una verificación adecuada de los certificados, el cliente puede verificar que hable con el servidor y no con un intermediario, por lo que se puede proteger el intercambio de clave crítica.

Los certificados generalmente son verificados por

  • Comprobación de la cadena de confianza, es decir, si el certificado es directa o indirectamente (a través de certificados inmediatos) emitido por una agencia de certificación (CA) en la que el navegador o el sistema operativo confían.
  • Verificación de que el certificado se emite para el nombre de host esperado, es decir, el tema coincide con el nombre de host.

Con certificados autofirmados o certificados emitidos por una CA desconocida para el navegador / OS, esta comprobación fallará. En este caso, se desconoce si el certificado original ya no fue emitido por una CA confiable o si hay algún hombre en el medio que manipule la conexión. Ser hombre en el medio no es difícil, especialmente en redes desprotegidas como puntos de acceso público.

Debido a que el navegador no puede verificar el certificado en estos casos, emitirá una gran advertencia para mostrarle al usuario que algo está realmente mal. Si tus amigos saben que solo tienes algún certificado autofirmado, también deben saber que este es el comportamiento esperado del navegador en este caso. También debe proporcionarles la huella digital de su certificado para que puedan estar seguros de que este es el certificado esperado, ya que no hay otra forma de verificar la validez de este certificado. Tenga en cuenta que esta advertencia también aparece una vez porque el navegador guarda la huella dactilar y, a partir de ese momento, sabe que su sitio está asociado con este certificado. Pero si cambias el certificado volverá a quejarse.

Si no te gusta la molestia de enseñar a todos tus amigos cómo verificar correctamente tu certificado, obtén un certificado de una CA pública. No es necesario que sean caros y algunos también emiten certificados gratuitos.

¿No es verdad que "cualquier encriptación es mejor que no encriptar"?

Si bien el cifrado incorrecto puede ser mejor que ningún cifrado, la transferencia de datos confidenciales a través de cifrados, pero la conexión de intermediario es definitivamente peor que la transferencia de datos no confidenciales sin cifrado. Y, a diferencia de HTTP simple, puede detectar un posible ataque de hombre en el medio con HTTPS. Lo que no puede hacer es averiguar si este es un posible ataque de intermediario o si el certificado no verificable es realmente el esperado, porque el navegador no tiene conocimiento previo de qué esperar. Por lo tanto, un certificado autofirmado en realidad no es tan malo, siempre que el navegador sepa de antemano que este sitio solo proporciona un certificado autofirmado. Y también podría no estar mal si los datos transferidos no son sensibles. Pero, ¿cómo debe saber el navegador qué tipo de datos y qué tipo de certificado esperar?


7
2017-07-18 06:35



Debido a que SSL / TLS está tratando de resolver dos problemas en un solo golpe, pero está ignorando completamente uno de ellos.

SSL está destinado a proporcionar tanto cifrado entre dos puntos finales, y autenticación que cada punto final es exactamente lo que dice que es. Esta última solución generalmente debe resolverse a través de organizaciones conocidas como "Autoridades de certificación" (CA), que deben verificar su identidad antes de aceptar darle un certificado. Si bien se han producido algunos errores espectaculares de este nivel de confianza en el pasado, todavía no tenemos nada mejor, por lo que los navegadores esperan que los certificados SSL / TLS sean emitidos por una de estas "autoridades de confianza". si no es así, no hay forma de saber si realmente estás hablando con la parte a la que querías. Entonces, aunque puede estar encriptado, tener una conversación encriptada con alguien que no debería ser parte de la conversación es en realidad PEOR que tener una conversación en texto simple con alguien que DEBE ser parte en la conversación.

Hay algunos proveedores gratuitos de SSL, como Let's Encrypt, que no causarán esta advertencia y que aún se ajustan a su presupuesto de $ 0.


4
2017-07-18 16:00



El motivo del clic es para ofrecer cierta protección contra los ataques de phishing.

La solución alternativa de $ 0 es crear una autoridad de certificación "verificada por Justaskin_" (que es solo un archivo especial) y hacer que sus amigos instalen la clave pública de su computadora. Usa la clave privada para Firme su certificado https y sus navegadores lo aceptarán. openssl es una herramienta que puede hacer esto.


1
2017-07-18 06:33