Pular para o conteúdo principal

TLS-ALPN-01 Challenge

O TLS-ALPN-01 Challenge valida o controle do domínio através de um handshake TLS na porta 443, útil quando a porta 80 está bloqueada.

Como funciona?

Passo a passo:

  1. Let's Encrypt gera um token único
  2. Cliente ACME cria certificado autoassinado temporário com o token
  3. Servidor responde na porta 443 com protocolo ALPN acme-tls/1
  4. Let's Encrypt verifica o token via extensão do certificado
  5. Certificado real é emitido após validação

Quando usar TLS-ALPN-01?

CenárioPor que usar TLS-ALPN-01?
Porta 80 bloqueadaFirewall ou ISP bloqueia HTTP
Apenas HTTPSServidor só aceita conexões TLS
Sem acesso ao DNSNão pode criar registros TXT

Requisitos

  • Porta 443 acessível publicamente
  • Servidor capaz de responder com protocolo ALPN acme-tls/1
  • Suporte do cliente ACME ao TLS-ALPN-01

Usando com Certbot

O Certbot não suporta TLS-ALPN-01 nativamente. Use alternativas:

Caddy (suporte nativo)

O Caddy tem suporte integrado e escolhe automaticamente o melhor método:

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

acme.sh com standalone TLS

# Standalone na porta 443
acme.sh --issue --alpn -d domain.com

# Com servidor web rodando (requer parar temporariamente)
acme.sh --issue --alpn --standalone -d domain.com

Traefik

O Traefik suporta TLS-ALPN-01 nativamente:

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

Limitações

O TLS-ALPN-01 NÃO suporta:

  • Certificados wildcard (*.domain.com)
  • Múltiplos domínios em um único challenge

Para esses casos, use DNS-01 Challenge.

Vantagens e Desvantagens

Vantagens:

  • Funciona quando porta 80 está bloqueada
  • Validação totalmente via TLS (mais seguro em alguns cenários)
  • Não requer acesso ao DNS

Desvantagens:

  • Não suporta wildcards
  • Menos clientes ACME suportam
  • Requer servidor capaz de ALPN
  • Mais complexo de depurar

Comparativo de métodos

CaracterísticaHTTP-01DNS-01TLS-ALPN-01
Porta necessária80Nenhuma443
WildcardNãoSimNão
Servidor internoNãoSimNão
ComplexidadeBaixaMédiaMédia
SuporteAmploAmploLimitado

Quando NÃO usar

  • Se a porta 80 está disponível → use HTTP-01
  • Se precisa de wildcard → use DNS-01
  • Se o servidor é interno → use DNS-01