Despliegue de Aplicaciones Web
José Juan Sánchez Hernández
Curso 2024/2025
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
.
La criptografía simétrica, utiliza una única clave tanto para cifrar como para descifrar. Las dos partes que se comunican deben tener la misma clave y mantenerla en secreto.
La ventaja de este método es que es rápido y eficiente, pero puede tener problemas de seguridad a la hora de distribuir la clave de forma segura.
Ejemplo: AES (Advanced Encryption Standard).
Imagen 1: Imagen de elaboración propia (CC BY-NC-SA).
Se recomienda la lectura del artículo sobre criptografía simétrica de Wikipedia.
La criptografía asimétrica, utiliza dos claves distintas: una clave pública (para cifrar) y una clave privada (para descifrar). La clave pública se puede compartir sin ningún problema, pero la clave privada se tiene que mantener en secreto.
Este método es más seguro, aunque tiene el inconveniente que es más lento que la criptografía simétrica.
Ejemplo: RSA (Rivest-Shamir-Adleman).
Imagen 2: Imagen de elaboración propia (CC BY-NC-SA).
Se recomienda la lectura del artículo sobre criptografía asimétrica de Wikipedia.
Imagen 3: 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
Una Autoridad de Certificación (CA) es una entidad de confianza encargada de emitir y revocar certificados digitales, para garantizar la seguridad en las comunicaciones realizadas mediante el protocolo TLS utilizado en HTTPS.
Se recomienda la lectura del artículo sobre Autoridad de Certificación de Wikipedia.
Existen tres tipos de certificados SSL/TLS:
iescelia.org
.iescelia.org
y para todos los subdominios
de *.iescelia.org
, como
openstack.iescelia.org
, etc.iescelia.org
y para
otrodominio.org
.