Filtros
Nivel
Artículos (116)
fundamentos

HTTPS, SSL y TLS

Entiende cómo funciona el cifrado en la web y por qué HTTPS es fundamental para la seguridad.

Estudiante
12 minutos
Enero 2026
🌐

Content Available in Spanish Only

This article is currently available only in Spanish. We're working on translations.

Available in: ES Tip: Use your browser's translation feature or visit the Spanish version

¿Qué es HTTPS?

HTTPS (HTTP Secure) es HTTP sobre una capa de cifrado TLS (Transport Layer Security). Protege la comunicación entre cliente y servidor contra:

  • Escucha (eavesdropping): un atacante en la red no puede leer el contenido.
  • Manipulación (tampering): no puede modificar el contenido en tránsito.
  • Suplantación (impersonation): el certificado verifica que estás hablando con el servidor correcto.

HTTP puro en 2024 es inaceptable

Chrome y Firefox marcan las páginas HTTP como "No seguras" en rojo. Los navegadores modernos bloquean contenido mixto (HTTP dentro de HTTPS). Google penaliza el SEO de sitios sin HTTPS. No hay excusa válida para no usar HTTPS.

TLS — Transport Layer Security

Versiones y Soporte

Terminal
TLS 1.0 (1999) → DEPRECATED ❌ Vulnerable a BEAST, POODLE TLS 1.1 (2006) → DEPRECATED ❌ Mismo problema TLS 1.2 (2008) → Aún soportado ✅ (con configuración correcta) TLS 1.3 (2018) → RECOMENDADO ✅ Más rápido, más seguro, sin algoritmos débiles SSL 3.0 y anteriores → PROHIBIDO ❌ POODLE, DROWN
Desactiva TLS 1.0 y 1.1 en tu servidor web. Solo deja TLS 1.2 (con ciphers modernos) y TLS 1.3. El 1% de usuarios que aún usa Windows XP no justifica la vulnerabilidad.

TLS Handshake — Cómo se establece la conexión

Terminal
Cliente Servidor │ │ │── ClientHello ─────────────────────► │ │ (versiones TLS, cipher suites, │ │ Client Random, extensiones) │ │ │ │◄── ServerHello + Certificate ────── │ │ (versión elegida, cipher elegido, │ │ Server Random, certificado X.509) │ │ │ │ [Cliente verifica certificado] │ │ [Extrae clave pública del cert] │ │ │ │── Key Exchange ──────────────────── ► │ │ (ECDHE: intercambio de claves │ │ efímeras sin transmitir el secret) │ │ │ │◄──────── Finished ──────────────── ► │ │ (ambos derivan la misma clave │ │ simétrica de sesión) │ │ │ │◄═══════ HTTP cifrado con AES ══════► │

Perfect Forward Secrecy (PFS)

TLS 1.3 requiere ECDHE para el intercambio de claves. Esto garantiza Perfect Forward Secrecy: si un atacante captura el tráfico hoy y roba la clave privada mañana, NO puede descifrar el tráfico capturado. Cada sesión usa claves efímeras.

Certificados X.509

¿Qué contiene un certificado?

Un certificado TLS es un documento digital firmado por una Autoridad de Certificación (CA)que atestigua que la clave pública pertenece al dominio indicado.

Terminal
$ openssl s_client -connect ejemplo.com:443 2>/dev/null | openssl x509 -noout -text | grep -A5 "Subject:" Subject: CN=ejemplo.com Issuer: C=US, O=Let's Encrypt, CN=R11 Validity: Not Before: Jan 1 00:00:00 2025 GMT Not After : Apr 1 00:00:00 2025 GMT ← 90 días (Let's Encrypt) Subject Alternative Name: DNS:ejemplo.com, DNS:www.ejemplo.com

Tipos de Certificados

  • DV (Domain Validation): Solo verifica control del dominio. Emitido en minutos. Gratis con Let's Encrypt. Suficiente para la mayoría de aplicaciones.
  • OV (Organization Validation): Verifica también la organización. Requiere documentación. Para empresas que quieren mostrar su nombre en el cert.
  • EV (Extended Validation): Verificación exhaustiva de la empresa. Era el "candado verde con nombre". Los navegadores ya no lo muestran especialmente desde 2019.
  • Wildcard (*.ejemplo.com): Cubre todos los subdominios de un nivel. Cuidado: un wildcard comprometido afecta a todos los subdominios.

Let's Encrypt — Certificados Gratuitos

Obtener certificado con Certbot
bash

Configuración Segura del Servidor

Nginx — TLS Hardening

nginx.conf — configuración TLS segura
nginx

HSTS — HTTP Strict Transport Security

HSTS instruye al navegador para que nunca acceda al dominio por HTTP, incluso si el usuario escribe http:// manualmente. Protege contra ataques de downgrade y SSL stripping.

Antes de activar HSTS con includeSubDomains

Asegúrate de que todos tus subdominios tienen HTTPS válido. Si un subdominio no lo tiene, quedará inaccesible para los usuarios que ya recibieron el header HSTS.

Ataques Comunes contra TLS/HTTPS

SSL Stripping

El atacante (en posición MITM) intercepta la redirección HTTP→HTTPS y sirve HTTP al cliente mientras mantiene HTTPS con el servidor. El usuario ve HTTP y el atacante ve todo en claro.

Mitigación: HSTS + preload list.

Certificate Pinning Bypass

En apps móviles, el pinning ancla el certificado esperado. Atacantes con acceso root al dispositivo pueden bypassear el pinning para interceptar tráfico con Frida o SSLUnpinning.

Certificados Incorrectos / Expirados

Un certificado expirado hace que los navegadores muestren un error crítico. Implementa monitorización de expiración y renovación automática con certbot/ACME.

Verificar expiración
bash

Herramientas de Análisis

Terminal
# Auditoría completa de la configuración TLS testssl.sh ejemplo.com # Herramienta online (gratis) https://www.ssllabs.com/ssltest/ → objetivo: calificación A+ # Verificar HSTS preload https://hstspreload.org # Verificar Certificate Transparency logs https://crt.sh/?q=ejemplo.com # Analizar headers de seguridad https://securityheaders.com
El objetivo es conseguir calificación A+ en SSL Labs. Esto requiere: TLS 1.3, HSTS con preload, sin cipher suites débiles, sin vulnerabilidades conocidas (BEAST, ROBOT, etc.).
Por Aitana Security Team