Cómo funciona HTTPS: el handshake TLS explicado
Cómo funciona HTTPS en un lienzo interactivo: el handshake TLS entre el navegador y el servidor, el papel de la autoridad de certificación y la sesión cifrada que viene después.
HTTPS es HTTP funcionando dentro de una sesión cifrada. Antes de que viaje una sola petición, el navegador y el servidor hacen un handshake TLS —la negociación inicial—: negocian, verifican el certificado del servidor y acuerdan una clave de sesión que solo comparten ellos.
Cómo funciona HTTPS: el handshake TLS explicado
El lienzo interactivo de FlowJam de esta explicación: cada carril, cada fila y cada flecha de arriba forma parte de un diagrama real de QueryChart que puedes abrir y editar.
Cómo leer este diagrama
- Lee la columna «Handshake TLS» de arriba abajo y después la columna «Sesión segura»: primero la negociación, luego el cifrado.
- El carril «Autoridad de certificación» no está en el camino de los mensajes: es la parte cuya confianza usa el navegador para juzgar el certificado del servidor.
- La decisión «¿El certificado es válido y no ha caducado?» es la única rama: un certificado válido continúa hacia el intercambio de claves y uno no válido termina en el aviso de bloqueo.
El handshake
«El navegador se conecta al sitio HTTPS» inicia el flujo, y «El navegador envía un ClientHello con los cifrados que admite» anuncia qué versiones del protocolo y qué suites de cifrado puede usar el navegador. «El servidor responde con su certificado y un ServerHello» elige entre esas opciones y presenta su identidad: un certificado de clave pública emitido para el dominio. Ese certificado es todo el anclaje de confianza de HTTPS.
Quién responde por el servidor
«El navegador comprueba la firma del certificado contra la CA» está en el grupo «Autoridad de certificación» porque el certificado lo firma una CA y el navegador confía en la clave pública de esa CA. La decisión «¿El certificado es válido y no ha caducado?» pone a prueba a la vez las tres comprobaciones reales: la firma, el nombre de dominio del certificado y su caducidad y revocación. La rama «No» termina en «El navegador bloquea la conexión con un aviso»: el navegador prefiere fallar cerrado antes que cargar un sitio sin verificar.
La sesión cifrada
Con el certificado ya de confianza, «El navegador envía un pre-master secret cifrado con la clave pública del servidor» es el único mensaje que solo el servidor real puede descifrar. A partir de él, «Ambos extremos derivan la misma clave de sesión» explica que los datos reales no se cifran con las claves del certificado: el certificado protege el intercambio de claves y una clave simétrica nueva protege la conversación. «Los mensajes HTTP se cifran con la clave de sesión» y «El navegador y el servidor intercambian datos cifrados» son el aspecto que tiene HTTPS durante el resto de la carga de la página.
Relaciones clave y conclusiones
- HTTPS = HTTP transportado sobre una sesión TLS cifrada; el cifrado ocurre antes de cualquier mensaje HTTP.
- La confianza viene de la autoridad de certificación, no del servidor: el navegador juzga el certificado del servidor frente a una CA en la que ya confía.
- Las claves del certificado se usan una vez, para proteger el intercambio de claves; una clave de sesión nueva cifra los datos reales.
- Un certificado no válido o no fiable detiene la conexión: HTTPS falla cerrado en lugar de enviar datos sin cifrar.
- Todo lo que HTTPS protege viaja por la misma red de conmutación de paquetes que dibuja el diagrama de internet.
Cuándo usar este diagrama
- Explicar a un equipo por qué aparece el candado y qué significa en realidad un aviso de certificado.
- Formar a los ingenieros en el handshake antes de que depuren problemas de TLS, certificados caducados o avisos de contenido mixto.
- Enseñar el modelo de confianza: cómo la jerarquía de CA y la validación de certificados protegen frente a la suplantación.
Cómo funciona
Nombra tu emisor de certificados real
Renombra el grupo «Autoridad de certificación» con tu proveedor y anota el tipo de certificado —DV, OV o EV— en la caja del certificado.
Añade la versión de TLS que usas
Anota en el paso del ClientHello las versiones del protocolo y las suites de cifrado que habilitas de verdad, para que el diagrama refleje tu configuración y no una genérica.
Dibuja tus ramas de fallo
Añade los resultados reales que hayas visto —un certificado caducado, un nombre de host que no coincide, un certificado revocado— y termina cada uno en el aviso o el bloqueo concreto que produce.
Divide el handshake hasta el detalle que necesites
Si vas a enseñar TLS 1.3, expande el intercambio de claves en sus mensajes reales (Key Share, Finished): el lienzo es tuyo para ampliarlo después de abrirlo.
Preguntas frecuentes
¿Cuál es la diferencia entre HTTP y HTTPS?
HTTPS es HTTP funcionando dentro de una conexión TLS cifrada. La petición y la respuesta son exactamente el mismo protocolo; lo que cambia es que, antes de enviar cualquier mensaje HTTP, el navegador y el servidor hacen un handshake que establece una sesión cifrada. Todo lo que se transmite —la URL, las cabeceras, las cookies, el cuerpo de la respuesta— solo lo pueden leer los dos extremos.
¿Qué ocurre durante el handshake TLS?
El navegador envía un ClientHello con los protocolos y cifrados que admite; el servidor responde con su elección y su certificado; el navegador verifica el certificado frente a una autoridad de certificación de confianza; y los dos extremos intercambian un secreto del que ambos derivan la misma clave de sesión. Después, los mensajes HTTP circulan cifrados. El diagrama contrae el intercambio en esos cuatro pasos.
¿Por qué necesita el navegador una autoridad de certificación?
Porque cualquier servidor podría decir que es cualquier dominio. La autoridad de certificación (CA) es el tercero que firma el certificado del servidor después de verificar que el dominio pertenece al solicitante. El navegador viene con las claves públicas de las CA de confianza, así que puede verificar la firma él mismo: eso es lo que convierte una identidad autoproclamada en una identidad avalada.
¿Qué significa un aviso de certificado?
Significa que ha fallado una de las comprobaciones de la decisión «¿El certificado es válido y no ha caducado?»: el certificado ha caducado, cubre otro dominio, lo firmó una CA no fiable o ha sido revocado. El navegador bloquea la conexión en lugar de continuar, porque no se puede verificar la identidad del sitio.
Edita este diagrama en QueryChart (FlowJam)
Abre este mismo lienzo del handshake TLS como tu propio diagrama, anota los cifrados que admites y adáptalo a tu configuración de certificados.