DNS-01 e o tipo de desafio ACME que suporta certificados wildcard (*.example.com). Ele comprova a propriedade do domínio adicionando um registro TXT ao seu DNS — sem necessidade de servidor web ou acesso a porta 80.
Como funciona
- O Let’s Encrypt fornece um token para cada domínio
- O GetHTTPS calcula um digest SHA-256 da autorização de chave e o codifica em base64url
- Você cria um registro TXT em
_acme-challenge.seudominio.comcom esse valor - O Let’s Encrypt consulta o DNS público em busca do registro TXT
- Se o valor corresponder, o desafio e aprovado e o certificado e emitido
Com o GetHTTPS, os passos 1-2 sao automaticos — você só precisa copiar e colar o nome do registro e o valor no seu provedor DNS.
Configuração passo a passo
Passo 1: Obter os detalhes do registro TXT no GetHTTPS
O GetHTTPS mostra:
- Nome do registro:
_acme-challenge.seudominio.com - Valor do registro: uma string codificada em base64url (~43 caracteres)
Passo 2: Adicionar o registro TXT no seu provedor DNS
| Campo | Valor |
|---|---|
| Tipo | TXT |
| Nome | _acme-challenge (alguns provedores adicionam o domínio automaticamente) |
| Valor | A string mostrada pelo GetHTTPS — copie e cole exatamente |
| TTL | 60 segundos (ou o menor que seu provedor permitir) |
Instruções por provedor:
Cloudflare
- Dashboard → seu domínio → DNS → Records → Add record
- Type: TXT, Name:
_acme-challenge, Content: cole o valor - TTL: Auto
- Clique em Save
AWS Route 53
- Hosted zones → seu domínio → Create record
- Record name:
_acme-challenge - Record type: TXT
- Value:
"cole-o-valor-aqui"(inclua as aspas duplas — o Route 53 exige) - TTL: 300
- Clique em Create records
GoDaddy
- DNS Management → Add
- Type: TXT, Name:
_acme-challenge, Value: cole o valor - TTL: 1 Hour (menor disponível)
- Clique em Save
Namecheap
- Domain List → Manage → Advanced DNS → Add new record
- Type: TXT, Host:
_acme-challenge, Value: cole o valor - TTL: Automatic
- Clique em Save all changes
Google Cloud DNS
gcloud dns record-sets create _acme-challenge.seudominio.com. \
--zone=sua-zona --type=TXT --ttl=60 --rrdatas="o-valor"
DigitalOcean
- Networking → Domains → seu domínio → Add record
- Type: TXT, Hostname:
_acme-challenge, Value: cole o valor - TTL: 30
Passo 3: Aguardar a propagação do DNS
As alteracoes de DNS levam de 1 a 15 minutos dependendo do seu provedor e das configurações de TTL. A pre-verificação do GetHTTPS confirma que o registro TXT esta visivel na internet pública antes de enviar ao Let’s Encrypt.
Verificar propagação manualmente:
dig TXT _acme-challenge.seudominio.com +short
# Deve retornar seu valor (entre aspas)
Ou use um verificador de propagação online para ver se o registro esta visivel globalmente.
Passo 4: Verificar no GetHTTPS
Clique em Verify. O GetHTTPS envia o desafio ao Let’s Encrypt. Se o registro TXT estiver correto, o certificado e emitido.
Passo 5: Limpeza
Após a emissão do certificado, delete o registro TXT _acme-challenge do seu DNS. Ele não é mais necessário e deixar registros antigos pode causar confusao durante a renovação.
Certificados wildcard com DNS-01
Para obter um certificado para *.seudominio.com, você deve usar DNS-01. O HTTP-01 não pode validar wildcards porque um wildcard cobre infinitos hostnames — não ha um único servidor para colocar um arquivo.
Wildcard + domínio raiz: Se você quer tanto *.example.com quanto example.com, o GetHTTPS pode exigir duas válidações. Algumas configurações precisam de dois registros TXT em _acme-challenge.example.com simultaneamente — um para o wildcard, outro para o apex. Mantenha ambos os registros até a válidação ser aprovada.
Guia completo de certificado wildcard →
DNS-01 vs HTTP-01
| DNS-01 | HTTP-01 | |
|---|---|---|
| O que você faz | Adiciona um registro TXT no DNS | Coloca um arquivo no seu servidor |
| Acesso necessário | Configurações DNS do domínio | Sistema de arquivos do servidor web |
| Requisito de porta | Nenhum | Porta 80 deve estar aberta |
| Suporte a wildcard | ✅ Necessário para wildcards | ❌ |
| Funciona sem servidor | ✅ | ❌ |
| Velocidade | 1-15 min (propagação DNS) | Instantaneo (se o arquivo estiver acessível) |
| Funciona atras de CDN | ✅ Sempre | ⚠️ Pode precisar bypass do CDN |
| Melhor para | Wildcards, sem servidor, configurações com CDN | Maioria dos certs de domínio único |
Escolha DNS-01 quando: você precisa de wildcard, a porta 80 esta bloqueada, seu servidor não é publicamente acessível ou você esta atras de um CDN.
Escolha HTTP-01 quando: você tem um servidor web, a porta 80 esta aberta e não precisa de wildcard. E mais rápido (sem espera de propagação).
Solução de problemas
Registro TXT não encontrado pelo GetHTTPS
- Aguarde mais — alguns provedores levam de 5 a 15 minutos. TTL baixo ajuda, mas não elimina o tempo de propagação.
- Verifique o nome do registro: Alguns provedores adicionam o domínio automaticamente. Se você digitar
_acme-challenge.example.come o provedor adicionar.example.com, o registro real se torna_acme-challenge.example.com.example.com(errado). Digite apenas_acme-challengee deixe o provedor adicionar o restante. - Verifique manualmente:
Se retornar vazio, o registro ainda não propagou.dig TXT _acme-challenge.seudominio.com +short
Valor errado / diferenca de maiusculas e minusculas
- O valor e sensivel a maiusculas e minusculas. Copie e cole diretamente do GetHTTPS — não redigite.
- Não adicione aspas a menos que seu provedor DNS exija (Route 53 exige, a maioria não).
Conflito de múltiplos registros TXT
- Remova registros TXT
_acme-challengeantigos de tentativas anteriores antes de adicionar novos. - Exceção: válidação de wildcard + apex pode precisar de dois registros no mesmo nome simultaneamente.
Provedor DNS não suporta registros TXT
Raro, mas alguns serviços DNS basicos não possuem suporte a TXT. Mude para um provedor DNS completo (o plano gratuito do Cloudflare suporta todos os tipos de registro).
Quando usar DNS-01
| Cenario | DNS-01? |
|---|---|
Certificado wildcard (*.example.com) | ✅ Obrigatório |
| Porta 80 bloqueada | ✅ Melhor opcao |
| Servidor em rede interna | ✅ Unica opcao |
| Atras de proxy Cloudflare/CDN | ✅ Evita problemas de proxy |
| Domínio sem servidor (estacionamento, redirecionamento) | ✅ Unica opcao |
| Certificado simples de domínio único com acesso ao servidor | ⚠️ HTTP-01 e mais rápido |
Perguntas frequentes
Posso automatizar desafios DNS-01?
Sim, com ferramentas CLI. O acme.sh tem integracoes de API embutidas para mais de 150 provedores DNS — pode adicionar e remover registros TXT automaticamente. O Certbot suporta plugins DNS para os principais provedores. O GetHTTPS requer alteracoes DNS manuais (baseado em navegador, sem chamadas de API).
E seguro fornecer minha chave de API DNS a um cliente ACME?
A chave de API tem acesso de escrita a sua zona DNS, entao trate-a com a mesma segurança que as credenciais do seu servidor. Use tokens de API com escopo limitado quando possível (ex.: tokens por zona do Cloudflare). Para maxima segurança, use o GetHTTPS com alteracoes DNS manuais — sem chaves de API envolvidas.
Por quanto tempo preciso manter o registro TXT?
Apenas durante a válidação — normalmente alguns minutos. Após a emissão do certificado, delete o registro. Você criara um novo com um novo valor quando renovar.
E se meu provedor DNS for lento para propagar?
Defina o TTL o mais baixo que seu provedor permitir (idealmente 60 segundos). Se a propagação levar mais de 15 minutos, verifique se ha erros de digitacao no nome/valor do registro, ou tente um provedor DNS diferente. O Cloudflare propaga registros TXT em segundos.
O DNS-01 funciona com proxy Cloudflare (nuvem laranja)?
Sim. A válidação DNS-01 consulta o registro TXT via DNS, não HTTP — portanto, o status do proxy Cloudflare (nuvem laranja vs cinza) não importa. Essa é uma vantagem chave sobre o HTTP-01, que pode ser bloqueado pelo proxy.