Introducción al protocolo HTTPS
Despliegue de Aplicaciones Web
Curso 2023/2024
1 ¿Qué es el protocolo HTTPS?
HTTPS (Hypertext Transfer Protocol Secure) es la versión segura del protocolo HTTP, es un protocolo de la capa de aplicación y es el principal protocolo utilizado en la Web (World Wide Web).
Este protocolo utiliza el protocolo criptográfico TLS (Transport Layer Security) anteriormente conocido como SSL (Secure Sockets Layer). El protocolo TLS se encarga de cifrar los datos transmitidos entre el cliente y el servidor garantizando: (1) la encriptación de los datos, (2) la autenticidad del cliente y servidor, (3) la integridad de los datos, es decir, que no han sido modificados.
2 ¿Qué puerto utiliza HTTPS?
El protocolo HTTPS utiliza el puerto 443
, mientras que
el protocolo HTTP utiliza el puerto 80
.
3 ¿Qué es la criptografía asimétrica?
Se recomienda la lectura del artículo sobre criptografía asimétrica de Wikipedia.
4 ¿Qué es la criptografía simétrica?
Se recomienda la lectura del artículo sobre criptografía simétrica de Wikipedia.
5 Cómo funciona HTTPS
Imagen 1: Imagen obtenida de ByteByteGo.com.
A continuación, se detallan los pasos que se realizan en una comunicación HTTPS:
Paso 1. TCP 3-Way Handshake
- En primer lugar, el cliente y el servidor establecen una conexión TCP, utilizando el procedimiento conocido como TCP 3-Way Handshake.
Paso 2. Validación del Certificado SSL/TLS
El cliente envía al servidor un mensaje
ClientHello
que contiene: - La última versión de TLS que el cliente puede utilizar. - Lista de algoritmos de cifrado preferidas por el cliente.El servidor responde con un mensaje
ServerHello
que contiene: - La versión de [TLS] seleccionada. - Los algoritmos de cifrado seleccionados.El servidor envía su certificado SSL/TLS al cliente. El certificado contiene su clave pública, el nombre del dominio, fecha de expiración, etc. y tiene que estar firmado por una autoridad de certificación (CA) de confianza. El cliente verifica el certificado.
Paso 3. Intercambio de la clave de sesión
Una vez que el cliente ha verificado el certificado SSL/TLS, genera un clave de sesión y la cifra con la clave pública del servidor.
El cliente genera una clave de sesión secreta (session key) y la cifra con la clave pública certificado del servidor. Luego, envía la clave cifrada al servidor.
El servidor descifra la clave de sesión secreta con su clave privada y obtiene la clave de sesión secreta (session key).
Paso 4. Intercambio de datos
- A partir de este punto, la comunicación entre el cliente y el servidor se cifra utilizando la clave de sesión compartida (encriptación simétrica).