Despliegue de Aplicaciones Web
José Juan Sánchez Hernández
Curso 2023/2024
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.
El protocolo HTTPS utiliza el puerto 443
, mientras que
el protocolo HTTP utiliza el puerto 80
.
Se recomienda la lectura del artículo sobre criptografía asimétrica de Wikipedia.
Se recomienda la lectura del artículo sobre criptografía simétrica de Wikipedia.
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
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