Cómo funcionan realmente HTTPS y TLS: Guía práctica
Por qué HTTPS es importante
Cada vez que visitas un sitio web, confías en que la conexión es privada y que el sitio es quien dice ser. HTTPS (Hypertext Transfer Protocol Secure) es el protocolo que lo hace posible al colocar HTTP sobre TLS (Transport Layer Security). Sin él, las contraseñas, los números de tarjetas de crédito y los datos personales viajarían en texto plano, fácilmente interceptables por cualquiera en la misma red.
En esta guía, desglosaremos cómo funcionan realmente HTTPS y TLS, desde el handshake que establece un canal seguro hasta el cifrado que protege tus datos. Verás los conceptos clave, los pasos involucrados y consejos prácticos para asegurar que tus propios sitios estén debidamente protegidos.
El handshake de TLS: estableciendo confianza
Antes de que se intercambie cualquier dato, el cliente (navegador) y el servidor realizan un handshake de TLS. Este proceso autentica al servidor, negocia algoritmos de cifrado y genera claves de sesión. Los pasos exactos varían entre versiones de TLS, pero las ideas centrales son similares.
Paso a paso: Handshake de TLS 1.2
- Client Hello: El cliente envía un mensaje con las versiones de TLS soportadas, los conjuntos de cifrado y un valor aleatorio (Client Random).
- Server Hello: El servidor responde con su versión de TLS elegida, el conjunto de cifrado, un valor aleatorio (Server Random) y su certificado digital.
- Verificación del certificado: El cliente verifica el certificado contra Autoridades de Certificación (CA) de confianza y comprueba la identidad del servidor.
- Intercambio de claves: Usando algoritmos como ECDHE, ambas partes calculan un secreto pre-maestro compartido sin transmitirlo directamente.
- Claves de sesión: Ambos lados derivan claves de sesión idénticas a partir del secreto pre-maestro y los valores aleatorios.
- Finished: Cada lado envía un MAC para confirmar la integridad del handshake; comienza la comunicación cifrada.
TLS 1.3 simplifica esto a un solo viaje de ida y vuelta (1-RTT) e incluso soporta la reanudación 0-RTT para conexiones repetidas, reduciendo significativamente la latencia.
Cifrado: simétrico y asimétrico
TLS utiliza tanto cifrado asimétrico como simétrico. La criptografía asimétrica (de clave pública) se usa durante el handshake para intercambiar claves de forma segura. Una vez establecidas las claves de sesión, el cifrado simétrico (como AES o ChaCha20) toma el relevo para la transferencia masiva de datos porque es mucho más rápido.
Los conjuntos de cifrado modernos utilizan Authenticated Encryption with Associated Data (AEAD), como AES-GCM o ChaCha20-Poly1305, que proporcionan tanto confidencialidad como integridad en un solo paso.
Certificados y cadenas de confianza
Un certificado digital vincula una clave pública a una identidad (como un nombre de dominio) y está firmado por una Autoridad de Certificación (CA). Los navegadores y sistemas operativos incluyen un almacén de CA raíz de confianza. Cuando un servidor presenta su certificado, el cliente verifica:
- El certificado está firmado por una CA de confianza (directamente o a través de una CA intermedia).
- El certificado está dentro de su período de validez.
- El nombre de dominio coincide con el Subject Alternative Name (SAN) del certificado.
- El certificado no ha sido revocado (mediante OCSP o CRL).
Si alguna verificación falla, el navegador muestra una advertencia. Let's Encrypt y otras CA ofrecen certificados gratuitos, haciendo HTTPS accesible para todos.
Errores comunes en la configuración de TLS
Incluso con HTTPS habilitado, las malas configuraciones pueden debilitar la seguridad. Estate atento a:
- Protocolos obsoletos: Deshabilita TLS 1.0 y 1.1; prefiere TLS 1.2 o 1.3.
- Conjuntos de cifrado débiles: Evita RC4, DES o cifrados de grado de exportación.
- Falta de HSTS: Añade la cabecera Strict-Transport-Security para prevenir ataques de degradación.
- Desajustes de certificados: Asegúrate de que los certificados cubran todos los subdominios y se renueven antes de su vencimiento.
Probar tu configuración de HTTPS
Utiliza herramientas en línea como SSL Test de SSL Labs para calificar tu configuración. Apunta a una A o A+ habilitando TLS 1.3, usando cifrados fuertes e implementando HSTS. Monitorea regularmente la expiración de los certificados; automatiza la renovación con clientes ACME como Certbot.
Preguntas frecuentes
¿Cuál es la diferencia entre HTTPS y TLS?
HTTPS es HTTP sobre TLS. TLS es el protocolo criptográfico que proporciona cifrado, autenticación e integridad. HTTPS es la versión segura de HTTP que utiliza TLS.
¿Cómo mejora el rendimiento TLS 1.3?
TLS 1.3 reduce el handshake a un solo viaje de ida y vuelta (1-RTT) y soporta la reanudación 0-RTT, reduciendo la latencia. También elimina algoritmos obsoletos, simplificando la configuración.
¿Necesito un certificado separado para cada subdominio?
Puedes usar un certificado comodín para *.example.com o un certificado multidominio (SAN) para cubrir múltiples nombres de host. Let's Encrypt ofrece ambas opciones de forma gratuita.
¿Listo para inspeccionar tu propio tráfico TLS? Usa nuestro Analizador de Registros de Nginx para procesar los registros de acceso y detectar patrones sospechosos o handshakes TLS fallidos.