Cuando ingreso mi nombre de usuario y contraseña en un sitio web protegido por SSL, ¿cuáles son todos los certificados, claves públicas y privadas involucradas para completar con éxito esta operación y cuáles son sus tareas principales?

Cada vez que abre un sitio web a través de HTTPS, ocurre lo siguiente (suponiendo un flujo SSL de 1 vía):

  1. Su navegador (cliente) realiza una solicitud al sitio web (que se ejecuta en un servidor).
  2. El servidor envía lo siguiente:
    1. Su certificado (que es la clave pública del servidor (junto con cierta información de identificación) firmado por una Autoridad de Certificación)
    2. Más información (como cifrados compatibles con protocolo de enlace SSL)
  3. El navegador luego verifica lo siguiente:
    1. ¿Es compatible con estos cifrados?
    2. ¿Confía en la Autoridad de certificación (CA) que ha firmado el certificado del servidor? (Cada navegador tiene un Trusted Certificate Store donde almacena los certificados digitales de las CA)
    3. ¿El valor cn especificado en el certificado del servidor coincide con el nombre de host solicitado originalmente por el navegador? (Por ejemplo: si el navegador solicitó https://www.yahoo.com y el servidor devolvió un valor de certificado con cn = www.someotherserver.com, el navegador lanzará una advertencia.
  4. Si las comprobaciones mencionadas anteriormente pasan en el navegador (el navegador puede lanzar una advertencia si 2 y 3 fallan, pero esto depende de la configuración de seguridad del navegador), se dice que el servidor autentica al servidor.
  5. El cliente genera una cadena aleatoria, la cifra con la clave pública del servidor y la envía al servidor.
  6. Como el servidor tiene su clave privada, puede descifrar la cadena aleatoria. Ahora, tanto el servidor como el cliente tienen el “secreto compartido”: cadena aleatoria.
  7. Usando el secreto compartido, tanto el cliente como el servidor generan una clave de sesión utilizada para cifrar y descifrar los mensajes enviados por cable.

En el caso de SSL de 2 vías, el servidor también autentica al cliente. El cliente envía su información de certificado junto con los cifrados admitidos. El servidor verifica el certificado del cliente (esto se conoce como servidor que autentica al cliente). Dado que SSL de 2 vías implica la autenticación del cliente y del servidor, también se conoce como “Autenticación Mutua”.

La siguiente imagen muestra una buena vista de cómo se produce el protocolo de enlace SSL en el caso de SSL de 2 vías:

Archivo: protocolo de enlace SSL con autenticación bidireccional con certificados.svg