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:
- Let's Encrypt genera un token único
- El cliente ACME crea un certificado autofirmado temporal con el token
- El servidor responde en el puerto 443 con protocolo ALPN
acme-tls/1 - Let's Encrypt verifica el token vía extensión del certificado
- 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 bloqueado | Firewall o ISP bloquea HTTP |
| Solo HTTPS | El servidor solo acepta conexiones TLS |
| Sin acceso al DNS | No 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ística | HTTP-01 | DNS-01 | TLS-ALPN-01 |
|---|---|---|---|
| Puerto necesario | 80 | Ninguno | 443 |
| Wildcard | No | Sí | No |
| Servidor interno | No | Sí | No |
| Complejidad | Baja | Media | Media |
| Soporte | Amplio | Amplio | Limitado |