TLS es el protocolo criptográfico que protege las conexiones HTTPS, cifra los datos en tránsito y autentica servidores en internet.
Resumen TLS (Transport Layer Security) es un protocolo criptográfico que cifra la comunicación entre un cliente (navegador, app) y un servidor a través de internet. TLS protege los datos en tránsito de la interceptación y la manipulación. Cada conexión HTTPS usa TLS. TLS 1.3, el estándar actual, completa el handshake de seguridad en un viaje de ida y vuelta (1-RTT), frente a los dos de TLS 1.2, reduciendo la latencia de conexión entre 30 y 50 ms en promedio. SSL es el predecesor más antiguo de TLS y actualmente se considera inseguro — todas las referencias a “SSL” en sistemas modernos significan en realidad TLS.
¿Qué es TLS?
TLS (Transport Layer Security) es un protocolo criptográfico que proporciona tres garantías para los datos transmitidos a través de una red:
- Confidencialidad — Los datos se cifran y no pueden ser leídos por terceros que intercepten la conexión.
- Integridad — Los datos no pueden modificarse en tránsito sin que se detecte.
- Autenticación — El servidor prueba su identidad usando un certificado digital firmado por una Autoridad de Certificación (CA) de confianza.
TLS opera en la capa de transporte. Se sitúa entre la capa de aplicación (HTTP, SMTP, gRPC) y la capa TCP, creando un túnel cifrado por el que viajan los datos de la aplicación.
TLS vs SSL: ¿cuál es la diferencia?
SSL (Secure Sockets Layer) es el predecesor de TLS. SSL 2.0 se publicó en 1995. SSL 3.0 se publicó en 1996 y fue deprecado en 2015 debido a la vulnerabilidad POODLE.
TLS 1.0 reemplazó a SSL 3.0 en 1999. Le siguieron TLS 1.1, 1.2 y 1.3. Hoy en día, todas las versiones de SSL están deprecadas e inseguras. Cuando la gente dice “certificado SSL” o “conexión SSL”, se refiere a TLS — la terminología persiste, pero el protocolo es TLS.
| Versión | Año | Estado |
|---|---|---|
| SSL 2.0 | 1995 | Deprecado — no usar |
| SSL 3.0 | 1996 | Deprecado — no usar |
| TLS 1.0 | 1999 | Deprecado — no usar |
| TLS 1.1 | 2006 | Deprecado — no usar |
| TLS 1.2 | 2008 | Soportado — ampliamente desplegado |
| TLS 1.3 | 2018 | Estándar actual — preferido |
Cómo funciona TLS: el handshake
Antes de que fluyan los datos cifrados, el cliente y el servidor realizan un handshake TLS para acordar los parámetros de cifrado y verificar la identidad.
Handshake TLS 1.3 (1-RTT):
- ClientHello — El cliente envía los cipher suites compatibles y una clave compartida.
- ServerHello + Certificado + Finished — El servidor selecciona el cipher suite, envía su certificado y completa la derivación de claves en un solo mensaje.
- Client Finished — El cliente verifica el certificado y envía su mensaje Finished. Los datos cifrados de la aplicación comienzan inmediatamente.
Handshake TLS 1.2 (2-RTT): TLS 1.2 requería dos viajes de ida y vuelta completos antes de que pudieran fluir los datos, añadiendo entre 60 y 100 ms de latencia en una conexión típica con RTT de 30 ms. TLS 1.3 redujo esto a un solo viaje.
| Característica | TLS 1.2 | TLS 1.3 |
|---|---|---|
| Viajes de ida y vuelta del handshake | 2-RTT | 1-RTT |
| Reanudación de sesión 0-RTT | No | Sí (riesgo de replay en solicitudes no idempotentes) |
| Secreto hacia adelante perfecto | Opcional | Obligatorio |
| Cifrado del certificado | No | Sí (cifrado en tránsito) |
| Cipher suites soportados | Muchos (incluyendo débiles) | 5 (todos AEAD robustos) |
| Mejora de rendimiento | Base | ~30–50 ms más rápido por nueva conexión |
Certificados TLS y la cadena de confianza
Un certificado TLS es un documento digital que prueba la identidad de un servidor. Contiene la clave pública del servidor y está firmado por una Autoridad de Certificación (CA).
Cadena de validación del certificado:
- CA raíz — De confianza para sistemas operativos y navegadores. Las claves privadas de la CA raíz se guardan fuera de línea.
- CA intermedia — Emite certificados de entidad final, protegiendo a la CA raíz de la exposición directa.
- Certificado hoja — Instalado en el servidor. Contiene el nombre de dominio y la clave pública.
Un certificado es válido si: (1) su cadena de firma lleva a una CA raíz de confianza, (2) el dominio coincide con el Subject Alternative Name (SAN) del certificado y (3) no ha expirado ni sido revocado.
Let’s Encrypt emite certificados TLS gratuitos con renovación automática para cualquier dominio públicamente accesible mediante el protocolo ACME.
Cipher suites en TLS
Un cipher suite es la combinación de algoritmos criptográficos usados en una conexión TLS. TLS 1.3 soporta solo 5 cipher suites, todos usando AEAD (Authenticated Encryption with Associated Data):
TLS_AES_128_GCM_SHA256TLS_AES_256_GCM_SHA384TLS_CHACHA20_POLY1305_SHA256TLS_AES_128_CCM_SHA256TLS_AES_128_CCM_8_SHA256
TLS 1.2 soporta cientos de cipher suites, incluyendo débiles como RC4 y 3DES. Deshabilitar los cipher suites débiles es un paso obligatorio en el hardening de TLS.
Errores TLS comunes y sus causas
| Error | Causa |
|---|---|
SSL_ERROR_HANDSHAKE_FAILURE | Cliente y servidor no comparten ningún cipher suite o versión TLS compatible |
ERR_CERT_DATE_INVALID | El certificado ha expirado |
ERR_CERT_COMMON_NAME_INVALID | El dominio del certificado no coincide con el dominio solicitado |
ERR_SSL_VERSION_OR_CIPHER_MISMATCH | Cliente y servidor soportan versiones TLS o cipher suites incompatibles |
CERTIFICATE_VERIFY_FAILED | La cadena de certificados está rota o la CA raíz no es de confianza |
| Timeout del handshake | Problema de red o firewall bloqueando el tráfico TLS en el puerto 443 |
Lista de verificación para hardening TLS
- Deshabilita SSL 2.0, SSL 3.0, TLS 1.0 y TLS 1.1.
- Habilita TLS 1.3 como versión preferida.
- Usa solo cipher suites AEAD (AES-GCM, ChaCha20-Poly1305).
- Habilita HSTS (
Strict-Transport-Security) conincludeSubDomainsypreload. - Usa algoritmos de intercambio de claves efímeras (ECDHE) para garantizar el Secreto Hacia Adelante Perfecto.
- Automatiza la renovación de certificados para evitar expiraciones (Let’s Encrypt + ACME).
- Habilita OCSP stapling para reducir la latencia en las comprobaciones de revocación.
Preguntas frecuentes
¿Qué es TLS en términos simples? TLS es la tecnología que pone el candado en la barra de direcciones de tu navegador. Cifra los datos entre tu navegador y un sitio web para que nadie pueda interceptarlos ni leerlos en tránsito.
¿SSL es lo mismo que TLS? No, pero en la práctica se refieren a lo mismo. SSL es el protocolo más antiguo (ahora deprecado e inseguro). TLS es el reemplazo moderno. Cuando ves “certificado SSL” o “conexión SSL”, el protocolo que realmente se está usando es TLS.
¿Qué es el handshake TLS? El handshake TLS es el proceso de negociación que ocurre antes de que fluyan los datos cifrados. El cliente y el servidor acuerdan un cipher suite, el servidor prueba su identidad con un certificado y ambos lados derivan una clave de cifrado compartida. En TLS 1.3, esto tarda un solo viaje de ida y vuelta.
¿Por qué TLS 1.3 es más rápido que TLS 1.2? TLS 1.3 completa el handshake en un viaje de ida y vuelta en lugar de dos. En una conexión con 50 ms de RTT, esto ahorra aproximadamente 50 ms por nueva conexión. TLS 1.3 también soporta reanudación de sesión 0-RTT para usuarios que regresan.
¿Qué sucede cuando expira un certificado TLS? Cuando un certificado TLS expira, los navegadores rechazan la conexión y muestran una advertencia de seguridad. Los usuarios ven errores como “Tu conexión no es privada”. La renovación automática de certificados (p. ej., mediante Let’s Encrypt y el protocolo ACME) previene esto.
¿Qué es mTLS? mTLS (mutual TLS) requiere que tanto el cliente como el servidor presenten certificados. El TLS estándar solo autentica al servidor. mTLS autentica a ambas partes, siendo común en seguridad de APIs, integraciones B2B y autenticación de dispositivos IoT.
¿Qué es el Secreto Hacia Adelante Perfecto (PFS)? PFS significa que cada sesión TLS usa una clave de cifrado única y temporal. Si la clave privada de un servidor se compromete en el futuro, las sesiones pasadas no podrán descifrarse porque sus claves de sesión nunca se almacenaron. TLS 1.3 exige PFS para todas las conexiones.
¿Qué puerto usa TLS? HTTPS (HTTP sobre TLS) usa el puerto 443 por defecto. Otros servicios protegidos con TLS usan sus propios puertos — SMTPS usa 465, IMAPS usa 993.