Percio Castelo.
EN Início
Guia Definitivo de Troubleshooting de Let's Encrypt e SSL no DirectAdmin (CLI, CAA e Subdomínio WWW)
← Voltar para blog

Guia Definitivo de Troubleshooting de Let's Encrypt e SSL no DirectAdmin (CLI, CAA e Subdomínio WWW)

07/06/2026 · 10 min · Infraestrutura · 408 visualizações

Quem opera ativamente infraestrutura de painéis de hospedagem corporativos reconhece que mensagens de erro genéricas e opacas constituem o gargalo operacional diário mais frustrante. Recentemente, me deparei com um cenário obstrutivo clássico no DirectAdmin: durante a rotina padrão de emissão via Let's Encrypt (acionada pela GUI para um tenant), o painel devolveu um enigmático e inflexível aviso: "Não foi possível executar sua solicitação".

Fim de linha. Nenhum log de console aparente e zero referências estruturais do processo que quebrou. Como interfaces frontend de controle web tendem a ofuscar retornos do stderr em prol da estética UI, a doutrina técnica de Nível 3 exige bypass direto para o terminal físico.


1. O diagnóstico forense via SSH e processamento do Let\'s Encrypt#

Quando o DirectAdmin interrompe silenciosamente os hooks de emissão SSL, a tática analítica mais eficaz requer a invocação do componente binário encarregado localmente assinando o escopo como permissão máxima (root).

1. Verificar presença do script e versão do painel#

Antes de tudo, garanta que o script de automação está no path esperado e que o DirectAdmin está ativo:

# Confirmar presença do utilitário
ls -la /usr/local/directadmin/scripts/letsencrypt.sh

# Consultar versão ativa do painel (use 'directadmin o' caso esteja em compilações antigas)
directadmin version

2. Executar a solicitação via CLI#

Invoquei diretamente o script nativo atrelado à porta do pacote para contornar a supressão do painel e capturar a saída de depuração:

/usr/local/directadmin/scripts/letsencrypt.sh request_single meudominio.com.br 4096

A via CLI liberou a verborragia padrão (debug) entregando subitamente a saída de erro unificada indicando a falha fatal:

[INFO] Starting Let's Encrypt certificate request for meudominio.com.br
[INFO] Verifying meudominio.com.br...
[ERROR] CAA record prevents issuing the certificate: "meudominio.com.br"
[ERROR] Unable to obtain certificate
[ERROR] _certbot command failed: exit status 1

2. A Anomalia do Subdomínio WWW e Entradas DNS no BIND#

Se você administra sites no DirectAdmin, provavelmente já passou pelo fluxo clássico de emitir um certificado SSL gratuito pelo Let's Encrypt. A expectativa normal é ver o domínio principal e o subdomínio www marcados lado a lado:

  • dominio.com.br
  • www.dominio.com.br

Em uma dessas rotinas, me deparei com uma situação curiosa: ao abrir a tela do Let's Encrypt no painel, o seletor simplesmente não exibia a opção www.dominio.com.br. No lugar dela, aparecia uma entrada inesperada:

  • dominio.com.br
  • letsencrypt.dominio.com.br

Se você também já abriu o painel e pensou "cadê o www que estava aqui?", este guia mostra o caminho da investigação: da checagem na zona DNS até as diretivas do servidor e o ajuste prático para emitir o certificado completo.


2.1 O que é a entrada letsencrypt.dominio.com.br?#

O caminho padrão para gerar o SSL no DirectAdmin é bem direto: acessar Certificados SSL (SSL Certificates), selecionar Certificado gratuito e automático do Let's Encrypt (Free & automatic certificate from Let's Encrypt), marcar os nomes desejados e clicar em Salvar/Emitir (Save/Issue).

Quando o www não aparece e você vê apenas letsencrypt.dominio.com.br, vale entender o papel dessa entrada:

  • O subdomínio letsencrypt.dominio.com.br funciona como um host temporário de validação. O protocolo ACME do Let's Encrypt utiliza essa entrada para checar desafios de controle do domínio antes de assinar a chave.
  • Ele não é o seu site, não recebe tráfego de visitantes e não substitui o www.

A dúvida prática que fica é: se o www é o apontamento mais comum da web, por que o painel deixou de listá-lo automaticamente?


2.2 Verificando a zona de DNS no BIND#

O primeiro teste lógico é conferir se o registro www realmente existe na zona DNS ou se foi apagado acidentalmente.

Abrindo a tabela de registros DNS do domínio no servidor:

$TTL 3600
@       IN      SOA     dns1.provedor.com.br.      hostmaster.dominio.com.br. (
                                                2025091600
                                                3600
                                                3600
                                                1209600
                                                86400 )

dominio.com.br.    3600    IN      NS      dns1.provedor.com.br.
dominio.com.br.    3600    IN      NS      dns2.provedor.com.br.

ftp     3600    IN      A       192.0.2.10
mail    3600    IN      A       192.0.2.10
pop     3600    IN      A       192.0.2.10
smtp    3600    IN      A       192.0.2.10
dominio.com.br.    3600    IN      A       192.0.2.10
www     3600    IN      A       192.0.2.10

dominio.com.br.    3600    IN      MX      10 mail

dominio.com.br.    3600    IN      TXT     "v=spf1 a mx ip4:192.0.2.10 ~all"

O que essa checagem mostra:#

  • O registro www 3600 IN A 192.0.2.10 está ativo e apontando para o mesmo IP do domínio raiz.
  • Não há falha física no arquivo de zona nem ausência de apontamento A ou CNAME.

Com isso, fica descartado qualquer problema de resolução básica de DNS na zona local.


2.3 Diretivas do Let\'s Encrypt no directadmin.conf#

O passo seguinte foi conferir o arquivo principal de configuração do DirectAdmin (/usr/local/directadmin/conf/directadmin.conf) para checar se alguma diretiva global de ACME estava limitando as opções.

Consultando os parâmetros do Let's Encrypt:

grep lets /usr/local/directadmin/conf/directadmin.conf

Saída retornada:

default_acme_provider=letsencrypt
letsencrypt=1
letsencrypt_disable_renew_after_renew_failure=0
letsencrypt_list=letsencrypt
letsencrypt_renewal_error_to_users=0
letsencrypt_renewal_failure_notice_after_attempt=5
letsencrypt_renewal_notice_to_admins=1
letsencrypt_renewal_success_notice=0
renew_letsencrypt_on_suspended_domain=1

O que cada linha faz na prática:

  • default_acme_provider=letsencrypt: define o Let's Encrypt como provedor ACME padrão.
  • letsencrypt=1: ativa o suporte nativo ao Let's Encrypt no painel.
  • letsencrypt_disable_renew_after_renew_failure=0: não cancela renovações futuras após uma falha pontual.
  • letsencrypt_list=letsencrypt: lista de tratamento padrão para certificados gerenciados.
  • letsencrypt_renewal_error_to_users=0: evita disparar e-mails de erro transitórios para usuários da conta.
  • letsencrypt_renewal_failure_notice_after_attempt=5: notifica a administração apenas após 5 tentativas sem sucesso.
  • letsencrypt_renewal_notice_to_admins=1: mantém os alertas administrativos ligados.
  • letsencrypt_renewal_success_notice=0: não envia e-mails em renovações bem-sucedidas.
  • renew_letsencrypt_on_suspended_domain=1: renova o SSL mesmo que a conta esteja suspensa temporariamente.

Em seguida, conferindo as opções de domínio:

grep domain /usr/local/directadmin/conf/directadmin.conf
check_subdomain_owner=1
renew_letsencrypt_on_suspended_domain=1
  • check_subdomain_owner=1: garante que subdomínios só possam ser criados por quem é dono do domínio principal na mesma conta.

Tudo no servidor estava nos parâmetros padrão e operando normalmente. O problema não vinha de um travamento do serviço nem de configuração global incorreta.


2.4 Por que o DirectAdmin não listou o www?#

Quando o DNS está correto e o serviço ACME está ativo, a ausência do www na interface do DirectAdmin acontece por causa de como o painel descobre os nomes elegíveis para o certificado:

  1. Alias de Servidor Web vs. Estrutura do Painel:

Servidores web como Apache e Nginx aceitam o www automaticamente via diretivas ServerAlias. Porém, a interface do DirectAdmin só monta a lista de seleção quando o www está cadastrado explicitamente na conta como subdomínio ou configurado em Apontamentos de Domínio (Domain Pointers) como um apontamento do tipo Alias.

  1. Inclusão manual no assistente:

Se o painel não puxar o www automaticamente na grade de caixas de seleção, você pode adicioná-lo manualmente no campo de hostnames adicionais do assistente do Let's Encrypt (www.dominio.com.br). Ele será incluído normalmente no certificado emitido (SAN - Subject Alternative Name).

  1. Cache de domínios e recarregamento:

O DirectAdmin armazena em cache as listas de domínios da conta para acelerar a interface. Recarregar a página ou revalidar a lista de apontamentos força o painel a reconstruir a lista de seleção.


2.5 Guia rápido para resolver o subdomínio www#

Se o www sumir da tela de emissão do SSL no seu painel:

  • [x] Confira o DNS: Garanta que o registro A ou CNAME para www existe e aponta para o IP correto.
  • [x] Cheque os Apontamentos de Domínio: Veja se o www consta como Alias em Domain Pointers na conta.
  • [x] Adicione manualmente: Digite www.dominio.com.br no campo de domínio adicional na própria tela do Let's Encrypt.
  • [x] Recarregue o painel: Atualize a página do módulo de certificados para forçar a reconstrução da lista.

Com esses passos, o certificado é emitido cobrindo tanto dominio.com.br quanto www.dominio.com.br sem erros de conexão no navegador.

3. A Patologia da Rede: Desvendando Conflitos de Registro CAA#

Operacionalmente sob engenharia de tráfego de rede e segurança, o registro CAA (Certification Authority Authorization), regulamentado hoje pela RFC 8659 (que substitui e atualiza a RFC 6844 original), constitui uma "cláusula-mater" de segurança baseada nos arquivos de zona DNS de topo. Ele barra preventivamente a emissão irregular de certificados digitais estipulando ativamente uma Whitelist exclusiva que designa qual Autoridade Certificadora (CA) detém a outorga da segurança sobre a URL correspondente.

Antes de isolar o CAA, é boa prática inspecionar de forma ampla a zona DNS em busca de outros registros conflitantes ou órfãos. Contudo, observe que consultas dig ANY podem ser ignoradas, bloqueadas ou retornar respostas mínimas por servidores de nomes modernos em conformidade com a RFC 8482 para mitigar ataques de amplificação DDoS. Por isso, consultas direcionadas ao registro específico (dig CAA) são consideravelmente mais confiáveis:

# Inspecionar registros da zona (com ressalvas da RFC 8482 para consultas ANY)
dig meudominio.com.br ANY +noall +answer

# Consulta direta e portátil para o registro CAA
dig meudominio.com.br CAA +short

Vasculhei a tabela de DNS raiz mantida localmente no respectivo autoritativo do host (domain.com) buscando registros do tipo CAA. Em servidores DNS mais antigos ou em saídas cruas do BIND, o registro CAA pode aparecer sob o identificador numérico genérico TYPE257:

meudominio.com.br. 14400   IN      TYPE257 \# 17 00056973737565616D617A6F6E2E636F6D

A diretiva sistêmica TYPE257 revela o padrão cru em como a arquitetura do painel empacota nativamente a injeção CAA subjacente em BIND. Se processarmos a conversão inversa do longo payload extrativo em notação hexadecimal (\# 17 000569...), traduziremos sua string ASCII explícita resultando na regra de liberação: 0 issue "amazon.com".

A instrução lógica estava transmitindo globalmente o respectivo bloqueio ativo: "Nenhuma Autoridade Certificadora opera mundialmente a assinatura sobre este hostname exceto a Amazon CA". Visto que os pacotes de handshake via Let's Encrypt submeteram a Validation Challenge, os nós de processamento LE realizaram uma consulta DNS prévia e recusaram a emissão. Investigando a infraestrutura do cliente, concluiu-se que ele abrigava dependências de CDN sob a malha do AWS CloudFront operando subdomínios, o que justificava a presença isolada da Amazon na ACL original.


4. Correção Cirúrgica: Ajuste dos Registros CAA e Zona DNS no BIND#

O amadorismo comum optaria simploriamente pelo extermínio rápido truncando e deletando a regra exclusiva imposta voltada à amazon.com. Porém, remover as restrições causaria falhas sistêmicas rompendo integrações programadas renovando tráfego automatizado nas arquiteturas nativas AWS associadas às CDNs originárias.

A solução correta exige o paralelismo: fundir as regras permitindo que ambas as CAs coexistam. É preciso declarar explicitamente a diretiva para certificados normais (issue) e, opcionalmente, para certificados coringas (issuewild) caso haja subdomínios dinâmicos a proteger.

Tabela de referência: estrutura do CAA#

Tipo / TagExemploDescrição
issue0 issue "letsencrypt.org"Autoriza a emissão de certificados padrão/singulares
issuewild0 issuewild "letsencrypt.org"Autoriza especificamente a emissão de certificados wildcard (*.dominio.com)
iodef0 iodef "mailto:[email protected]"Define o endereço de e-mail ou URI para reportar violações de emissão

Nota sobre Flags: O valor inicial 0 é a flag de não-criticidade. Se alterada para 128 (crítica), obriga a CA a abortar o processamento caso ela não reconheça ou não dê suporte a alguma propriedade declarada na linha.

Abordagem a: adicionando via interface e APIs (recomendado)#

Em vez de editar arquivos de zona BIND manualmente, você pode injetar as chaves de forma segura via APIs administrativas ou pela GUI do painel:

# Injetar registro CAA para Let's Encrypt via DirectAdmin API
curl -X POST "https://seu-servidor-da:2222/CMD_DNS_CONTROL" \
  -u "admin:senha-admin" \
  -d "action=record" \
  -d "type=CAA" \
  -d "domain=meudominio.com.br" \
  -d "value=0 issue \"letsencrypt.org\""

# Para suporte a Wildcards, adicione também o issuewild:
curl -X POST "https://seu-servidor-da:2222/CMD_DNS_CONTROL" \
  -u "admin:senha-admin" \
  -d "action=record" \
  -d "type=CAA" \
  -d "domain=meudominio.com.br" \
  -d "value=0 issuewild \"letsencrypt.org\""

Via Web GUI: Navegue em DNS Management > Add Record > Tipo: CAA e adicione as duas entradas equivalentes.

Abordagem b: adicionando hexadecimal manual no arquivo de zona BIND#

Caso precise realizar a intervenção diretamente nos arquivos de zona física (*.db do Bind): A tradução estrita gerou a diretiva CAA complementar (0 issue "letsencrypt.org"):

meudominio.com.br. 14400   IN      TYPE257 \# 22 000569737375656C657473656E63727970742E6F7267

O arquivo final contemplou o paralelismo concedendo imunidades emparelhadas:

meudominio.com.br. 14400   IN      TYPE257 \# 17 00056973737565616D617A6F6E2E636F6D
meudominio.com.br. 14400   IN      TYPE257 \# 22 000569737375656C657473656E63727970742E6F7267

5. Verificação Pós-Correção, Teste de Propagação e Reemissão do Certificado#

1. Consultar propagação local e TTL#

Verifique se a zona autoritativa do servidor local já serve a nova configuração:

# Consultar o registro CAA localmente
dig meudominio.com.br CAA +short

# Verificar TTL remanescente
dig meudominio.com.br CAA | grep -A1 "ANSWER SECTION"

2. Testar propagação global em múltiplos DNS#

Verifique se a propagação está ocorrendo nos servidores públicos do Google, Cloudflare e OpenDNS:

for dns in 8.8.8.8 1.1.1.1 208.67.222.222; do
  echo "Consultando DNS $dns..."
  dig @$dns meudominio.com.br CAA +short
done

3. Ferramentas online e DNS-over-HTTPS (doh)#

Valide a consistência do registro via cURL batendo na API DoH do Google ou utilize portais como o Verisign DNSSEC Analyzer e o Qualys SSL Labs:

curl -s "https://dns.google/resolve?name=meudominio.com.br&type=CAA" | jq .

6. Triagem de Logs de Produção, Procedimento de Rollback e Checklist#

Roteiro de rollback#

Se a alteração do registro CAA quebrar resoluções legadas, remova as linhas aditadas do arquivo de zona do BIND ou delete os registros criados via API, e execute o recarregamento do daemon para limpar o cache local:

# Validar sintaxe do arquivo de zona BIND
named-checkzone meudominio.com.br /var/named/meudominio.com.br.db

# Recarregar zona modificada
rndc reload meudominio.com.br

Fluxo de resolução de problemas (troubleshooting)#

Abaixo está o mapeamento visual do processo de depuração e resolução do erro de emissão SSL envolvendo o registro CAA no DirectAdmin:

graph TD A[Erro de Emissão SSL no DirectAdmin] --> B[Acessar o Terminal via SSH] B --> C[Executar letsencrypt.sh request_single] C --> D{Analisar a saída do erro} D -->|Erro: CAA record prevents issuing| E[Identificar CAs autorizadas na zona DNS] D -->|Outros Erros| F[Verificar logs: error.log / letsencrypt.log] E --> G{Consultar registros CAA via dig CAA} G --> H[Verificar se o Let's Encrypt está autorizado] H -->|Não autorizado| I[Adicionar registro CAA para letsencrypt.org] H -->|Já autorizado| J[Verificar propagação de DNS e TTL] I --> K[Injetar registro via API DirectAdmin ou Web GUI] K --> L[Verificar propagação com dig @8.8.8.8] L --> M[Solicitar reemissão do SSL]

Logs do servidor úteis para depuração#

Para triar problemas futuros no ciclo de renovação automática do DirectAdmin e Let's Encrypt:

  • Erros do DirectAdmin: error.log
  • Operações do Let's Encrypt: letsencrypt.log
  • Mensagens do Servidor DNS BIND: named.log

Conclusão e boas práticas de administração#

Firmada a adição aos autoritativos do named/Bind, o TTL natural impôs as horas necessárias para a varredura global do cache de tabelas DNS (Propagação). Substituí as complexidades da sintaxe BIND para uma abordagem diplomática simplificando o relatório para o cliente:

"Reporte Tecnológico Fechado: Identificamos bloqueios de validação ocorrendo na estrutura da malha de segurança ativa do protocolo DNS original, atrelados ao registro do tipo CAA (Certification Authority Authorization). Originalmente a regra delimitava de forma explícita que entidades certificadoras globais rejeitassem emissões sob seu domínio, permitindo apenas a Amazon CA (atrelada à infraestrutura de CDN do AWS CloudFront utilizada). Para sanar o problema sem afetar a estabilidade das integrações originais, adicionamos permissões complementares baseadas na RFC 8659 para a CA local (0 issue "letsencrypt.org" e 0 issuewild "letsencrypt.org"). Isso garante o funcionamento emparelhado de ambas as certificadoras sem quebras. Por gentileza, solicite a reemissão do AutoSSL assim que a propagação global do ciclo de DNS concluir nas próximas horas."

Nota de Operação Forense: A dependência de logs expostos puramente sob camada GUI subordina o sysadmin à inépcia. O terminal CLI transcreve sem filtros a causa raiz do problema. Entender atritos causados pelas variáveis externas nas sub-chaves limitadoras DNS (CAA/TXT/SRV) economiza horas de troubleshooting e evita downtime.

Este artigo foi útil?

Deixe uma reação rápida para apoiar o conteúdo:

408 leituras
Creative Commons Atribuição-NãoComercial

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.

0 comentários