Skip to main content

TLS-ALPN-01 Challenge

El TLS-ALPN-01 Challenge valida el control del dominio a través de un handshake TLS en el puerto 443, útil cuando el puerto 80 está bloqueado.

¿Cómo funciona?

Paso a paso:

  1. Let's Encrypt genera un token único
  2. El cliente ACME crea un certificado autofirmado temporal con el token
  3. El servidor responde en el puerto 443 con protocolo ALPN acme-tls/1
  4. Let's Encrypt verifica el token vía extensión del certificado
  5. El certificado real es emitido después de la validación

¿Cuándo usar TLS-ALPN-01?

Escenario¿Por qué usar TLS-ALPN-01?
Puerto 80 bloqueadoFirewall o ISP bloquea HTTP
Solo HTTPSEl servidor solo acepta conexiones TLS
Sin acceso al DNSNo puede crear registros TXT

Requisitos

  • Puerto 443 accesible públicamente
  • Servidor capaz de responder con protocolo ALPN acme-tls/1
  • Soporte del cliente ACME para TLS-ALPN-01

Usando con Certbot

Certbot no soporta TLS-ALPN-01 nativamente. Usa alternativas:

Caddy (soporte nativo)

Caddy tiene soporte integrado y elige automáticamente el mejor método:

# Caddyfile - HTTPS automático
domain.com {
reverse_proxy localhost:3000
}

acme.sh con standalone TLS

# Standalone en el puerto 443
acme.sh --issue --alpn -d domain.com

# Con servidor web corriendo (requiere parar temporalmente)
acme.sh --issue --alpn --standalone -d domain.com

Traefik

Traefik soporta TLS-ALPN-01 nativamente:

# traefik.yml
certificatesResolvers:
letsencrypt:
acme:
email: [email protected]
storage: acme.json
tlsChallenge: {} # Usa TLS-ALPN-01

Limitaciones

TLS-ALPN-01 NO soporta:

  • Certificados wildcard (*.domain.com)
  • Múltiples dominios en un único challenge

Para esos casos, usa DNS-01 Challenge.

Ventajas y Desventajas

Ventajas:

  • Funciona cuando el puerto 80 está bloqueado
  • Validación totalmente vía TLS (más seguro en algunos escenarios)
  • No requiere acceso al DNS

Desventajas:

  • No soporta wildcards
  • Menos clientes ACME lo soportan
  • Requiere servidor capaz de ALPN
  • Más complejo de depurar

Comparativo de métodos

CaracterísticaHTTP-01DNS-01TLS-ALPN-01
Puerto necesario80Ninguno443
WildcardNoNo
Servidor internoNoNo
ComplejidadBajaMediaMedia
SoporteAmplioAmplioLimitado

Cuándo NO usar

  • Si el puerto 80 está disponible → usa HTTP-01
  • Si necesitas wildcard → usa DNS-01
  • Si el servidor es interno → usa DNS-01