5. HTTPS (HTTP Secure)

HTTPS combina HTTP con un canal cifrado para garantizar que cada solicitud y respuesta viaje protegida de escuchas y manipulaciones. Se apoya en el protocolo TLS 1.3 para negociar claves, validar identidades y establecer algoritmos criptográficos robustos.

Adoptar HTTPS es obligatorio para proteger credenciales, cumplir normativas de privacidad y habilitar funciones modernas del navegador como HTTP/2, Service Workers o el acceso a APIs sensibles (geolocalización, notificaciones). El puerto 443 se ha convertido en el estándar de facto para servicios web productivos.

5.1 Extensión segura de HTTP

HTTPS conserva la misma semántica de recursos, métodos y códigos de estado de HTTP. La diferencia reside en que todo el flujo viaja dentro de un tĂșnel cifrado que se levanta antes de intercambiar datos de aplicación. Ese tĂșnel encapsula los mensajes HTTP y también puede transportar HTTP/2 y HTTP/3.

Gracias a este diseño, cualquier infraestructura que ya entendía HTTP puede migrar a HTTPS cambiando la terminación del servicio (reverse proxy, load balancer, servidor web) y montando certificados emitidos por una entidad confiable.

5.2 Handshake TLS paso a paso

El establecimiento de la conexión segura sigue una secuencia bien definida:

  1. ClientHello: el cliente envía la versión de TLS soportada, una lista de suites criptográficas y un número aleatorio.
  2. ServerHello: el servidor selecciona la suite, responde con su propio aleatorio y entrega el certificado digital.
  3. Verificación del certificado: el cliente valida la cadena, el nombre del host y la vigencia.
  4. Intercambio de claves: ambos calculan un secreto compartido (por ejemplo, mediante Diffie-Hellman elíptico).
  5. Mensajes Finished: se confirman las claves simétricas y comienza el cifrado de la sesión.

TLS 1.3 redujo el número de viajes necesarios, lo que acelera la conexión inicial y permite reanudar sesiones previas con 0-RTT cuando el cliente y el servidor confían uno en otro.

5.3 Certificados digitales y autoridades certificadoras

El certificado digital acredita la identidad del servidor y contiene la clave pública usada durante el handshake. Se emite siguiendo una cadena de confianza:

Elemento Responsabilidad Notas clave
Autoridad Raíz Firmar autoridades intermedias. Su certificado está preinstalado en navegadores y sistemas operativos.
Autoridad Intermedia Emitir certificados para dominios finales. Permite revocar en caso de compromiso sin afectar a toda la raíz.
Certificado del servidor Identificar al dominio o subdominio. Contiene nombre común, SAN, firma y periodo de validez.

Soluciones automatizadas como Let's Encrypt facilitan la emisión y renovación usando protocolos ACME y validaciones DNS o HTTP, reduciendo costos y errores operativos.

5.4 Propiedades de seguridad garantizadas

HTTPS aporta tres pilares fundamentales:

  • Confidencialidad: el cifrado simétrico impide que terceros lean el contenido.
  • Integridad: cada bloque incluye un MAC o AEAD que detecta modificaciones.
  • Autenticación: el certificado y la cadena validada aseguran que el cliente habla con el servidor correcto.

Además, muchas configuraciones habilitan forward secrecy, de modo que comprometer una clave privada en el futuro no permite descifrar tráfico capturado en el pasado.

5.5 Ejemplo práctico de URL segura

Una dirección HTTPS completa indica el esquema, el host, el puerto y el recurso solicitado:

https://api.finanzas.local:443/v1/reportes?mes=11&moneda=usd

Los navegadores modernos muestran indicadores visuales (candado, barra verde) cuando el certificado es válido y no existen elementos mixtos. También aplican políticas como HSTS para evitar que un usuario regrese a HTTP sin cifrar.

5.6 Uso en aplicaciones y APIs modernas

Servicios REST, GraphQL y microservicios tras puertas de enlace API dependen de HTTPS para autenticar tokens, sesiones y webhooks. Proveedores en la nube exigen cifrado extremo a extremo antes de permitir integraciones con datos sensibles o mecanismos como OAuth 2.0.

En arquitecturas con balanceadores globales, lo habitual es terminar TLS en el edge y volver a cifrar hacia los servicios internos para mantener el cumplimiento normativo. HTTP/2 sobre HTTPS habilita multiplexación y cabeceras comprimidas, mientras que HTTP/3 combina TLS con QUIC para reducir la latencia en redes móviles.

5.7 Herramientas de diagnóstico y automatización

PowerShell permite verificar rápidamente el certificado presentado por un servidor:

Invoke-WebRequest -Uri "https://www.google.com" -Method Head `
  | Select-Object StatusCode, @{Name="CertSubject";Expression={$_.RawContentStream `
  .BaseStream.ServicePoint.Certificate.Subject}}

Para confirmar conectividad y protocolo puede usarse:

Test-NetConnection -ComputerName www.contoso.com -Port 443

Un script sencillo en Python ayuda a monitorear la fecha de expiración del certificado desde pipelines de despliegue:

import ssl
import socket
from datetime import datetime

host = "www.google.com"
context = ssl.create_default_context()
with socket.create_connection((host, 443)) as sock:
    with context.wrap_socket(sock, server_hostname=host) as tls:
        data = tls.getpeercert()

expira = datetime.strptime(data["notAfter"], "%b %d %H:%M:%S %Y %Z")
dias = (expira - datetime.utcnow()).days
print(f"Certificado para {host} expira en {dias} días")

Automatizar estos controles evita incidentes causados por certificados caducados y ofrece alertas tempranas para renovar o revocar cuando sea necesario.

5.8 Buenas prácticas y cierre

Mantener HTTPS robusto implica rotar certificados con anticipación, deshabilitar protocolos inseguros (SSLv3, TLS 1.0), preferir suites modernas (AES-GCM, ChaCha20-Poly1305), habilitar OCSP stapling y monitorear reportes de Certificate Transparency. También conviene aplicar políticas de seguridad como Content-Security-Policy y Expect-CT.

Con estos cuidados, HTTPS protege la superficie crítica de cualquier servicio orientado a usuarios y allana el camino para APIs de confianza. El siguiente tema profundiza en FTP, otro protocolo histórico que, a diferencia de HTTPS, fue diseñado inicialmente sin cifrado.