Pregunta

¿Cuál es la serie de pasos necesarios para verificar de forma segura un certificado SSL? Mi (muy limitado) entendimiento es que cuando visita un sitio https, el servidor envía un certificado al cliente (el navegador) y el navegador obtiene la información del emisor del certificado de ese certificado, luego la usa para contactar al emisor, y de alguna manera compara certificados de validez.

  • ¿Cómo se hace esto exactamente?
  • ¿Qué pasa con el proceso que lo hace inmune a los ataques de hombre en el medio?
  • Lo que impide que alguna persona aleatoria configure su propio servicio de verificación para usar en ataques de hombre en el medio, por lo que todo "se ve" seguro?
¿Fue útil?

Solución

Aquí hay una explicación muy simplificada:

  1. Su navegador web descarga el certificado del servidor web, que contiene la clave pública del servidor web. Este certificado está firmado con la clave privada de una autoridad de certificación de confianza.

  2. Su navegador web viene instalado con las claves públicas de todas las principales autoridades de certificación. Utiliza esta clave pública para verificar que el certificado del servidor web haya sido firmado por la autoridad de certificación de confianza.

  3. El certificado contiene el nombre de dominio y / o la dirección IP del servidor web. Su navegador web confirma con la autoridad de certificación que la dirección que figura en el certificado es aquella con la que tiene una conexión abierta.

  4. Su navegador web genera una clave simétrica compartida que se utilizará para cifrar el tráfico HTTP en esta conexión; Esto es mucho más eficiente que usar el cifrado de clave pública / privada para todo. Su navegador encripta la clave simétrica con la clave pública del servidor web y luego la envía de vuelta, asegurando que solo el servidor web pueda descifrarla, ya que solo el servidor web tiene su clave privada.

Tenga en cuenta que la autoridad de certificación (CA) es esencial para prevenir ataques de hombre en el medio. Sin embargo, incluso un certificado sin firmar evitará que alguien escuche pasivamente su tráfico encriptado, ya que no tiene forma de obtener acceso a su clave simétrica compartida.

Otros consejos

Vale la pena señalar que, además de comprar un certificado (como se mencionó anteriormente), también puede crear el suyo de forma gratuita; esto se conoce como un "certificado autofirmado". La diferencia entre un certificado autofirmado y uno comprado es simple: el adquirido ha sido firmado por una Autoridad de Certificación que su navegador ya conoce. En otras palabras, su navegador puede validar fácilmente la autenticidad de un certificado comprado.

Desafortunadamente, esto ha llevado a una idea errónea común de que los certificados autofirmados son inherentemente menos seguros que los vendidos por CA comerciales como GoDaddy y Verisign, y que tiene que vivir con advertencias / excepciones del navegador si los usa; esto es incorrecto .

Si distribuye de forma segura un certificado autofirmado (o un certificado de CA, como sugirió Bobince) y lo instala en los navegadores que utilizarán su sitio , es tan seguro como uno que se compra y es no vulnerable a ataques de hombre en el medio y falsificación de certificados. Obviamente, esto significa que solo es factible si solo unas pocas personas necesitan acceso seguro a su sitio (por ejemplo, aplicaciones internas, blogs personales, etc.).

En aras de aumentar la conciencia y alentar a otros bloggers pequeños como yo a protegerse, escribí un tutorial de nivel de entrada que explica con más detalle los conceptos detrás de los certificados y cómo crear y usar un self de manera segura Certificado firmado (completo con ejemplos de código y capturas de pantalla).

Dijiste eso

  

el navegador obtiene la información del emisor del certificado   certificado, luego lo usa para contactar al emisor, y de alguna manera   compara los certificados de validez.

El cliente no tiene que consultar con el emisor porque dos cosas:

  1. todos los navegadores tienen una lista preinstalada de todas las claves públicas de CA principales
  2. el certificado está firmado, y esa firma en sí misma es prueba suficiente de que el certificado es válido porque el cliente puede asegurarse, solo y sin contactar al servidor del emisor, que ese certificado es auténtico. Esa es la belleza del cifrado asimétrico.

Observe que 2. no se puede hacer sin 1.

Esto se explica mejor en este diagrama grande que hice hace algún tiempo

(pase a "¿qué es una firma?" en la parte inferior)

blob

El cliente tiene un almacén previamente sembrado de claves públicas de las autoridades de certificación SSL. Debe haber una cadena de confianza desde el certificado para el servidor hasta las autoridades intermedias hasta uno de los llamados "root". certificados para que el servidor sea confiable.

Puede examinar y / o modificar la lista de autoridades de confianza. A menudo, hace esto para agregar un certificado para una autoridad local en la que usted confía, como la empresa para la que trabaja o la escuela a la que asiste o no.

La lista pre-sembrada puede variar según el cliente que use. Los grandes proveedores de certificados SSL aseguran que sus certificados raíz estén en todos los principales navegadores ($$$).

Los ataques de mono en el medio son "imposibles" a menos que el atacante tenga la clave privada de un certificado raíz de confianza. Dado que los certificados correspondientes se implementan ampliamente, la exposición de dicha clave privada tendría serias implicaciones para la seguridad del comercio electrónico en general. Debido a eso, esas claves privadas están muy, muy protegidas.

si tiene una mentalidad más técnica, este sitio es probablemente lo que desea: http: //www.zytrax.com/tech/survival/ssl.html

advertencia: la madriguera del conejo es profunda :).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top