DEV Community

Celso Nery
Celso Nery

Posted on

Certificados TLS Gratuitos com Let's Encrypt e Certbot

🇺🇸 English version here.

Em servidores tradicionais — uma VPS hospedando um site estático, um servidor de aplicação isolado, ou qualquer máquina fora do cluster — o Certbot continua sendo a ferramenta mais direta para emitir e renovar certificados TLS gratuitos do Let's Encrypt.

Este artigo cobre os dois cenários mais comuns: emitir um certificado para um domínio específico servido por um diretório (webroot) e emitir um certificado wildcard, que cobre um domínio e todos os seus subdomínios de uma só vez.

Emitindo um certificado para um domínio

Se a aplicação já está servida por um servidor web (Apache, Nginx, etc.) apontando para um diretório específico, o método webroot é o mais simples: o Certbot cria um arquivo de validação temporário dentro desse diretório, que o Let's Encrypt acessa via HTTP para confirmar que você controla o domínio.

certbot -v certonly --webroot -w /var/www/vhosts/oregon -d www.oregon.net.br
Enter fullscreen mode Exit fullscreen mode

Onde:

  • --webroot -w /var/www/vhosts/oregon: informa o diretório raiz onde o site já está sendo servido;
  • -d www.oregon.net.br: o domínio para o qual o certificado será emitido.

Renovando certificados

Certificados do Let's Encrypt têm validade curta (90 dias), então a renovação precisa ser um processo recorrente. Para renovar todos os certificados próximos do vencimento de uma vez:

certbot renew
Enter fullscreen mode Exit fullscreen mode

Para renovar um domínio específico:

certbot renew certonly -d www.oregon.net.br
Enter fullscreen mode Exit fullscreen mode

Importante: para esse tipo de procedimento, principalmente quando feito via SSH em uma VPS, é recomendado usar o screen (ou tmux) antes de rodar o comando — assim, se a conexão cair no meio do processo, o comando continua rodando na sessão em segundo plano, sem precisar recomeçar.

Na prática, a forma mais comum de lidar com renovação é agendar certbot renew em um cron job, já que o Certbot só renova certificados que estão de fato próximos de expirar — rodar o comando com frequência não causa problema.

Emitindo um certificado wildcard

Quando uma aplicação usa múltiplos subdomínios (por exemplo, api.bagarote.dev.br, adm.bagarote.dev.br, app.bagarote.dev.br), em vez de emitir um certificado para cada um separadamente, é possível emitir um único certificado wildcard, que cobre todos os subdomínios de uma vez.

Certificados wildcard exigem validação via DNS (não HTTP), já que não existe um servidor web fixo por trás de *.dominio:

certbot certonly -v --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory -d '*.bagarote.dev.br' -d bagarote.dev.br
Enter fullscreen mode Exit fullscreen mode

Ao rodar esse comando, o Certbot vai pedir para você criar um registro TXT específico (_acme-challenge.bagarote.dev.br) no DNS do seu domínio, como prova de que você o controla.

Renovando o certificado wildcard

certbot certonly --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory -d '*.bagarote.dev.br' -d bagarote.dev.br --force-renewal --manual-public-ip-logging-ok
Enter fullscreen mode Exit fullscreen mode

A flag --force-renewal força a emissão de um novo certificado mesmo que o atual ainda esteja válido, e --manual-public-ip-logging-ok confirma que você está ciente de que o Let's Encrypt registra o IP público de onde a validação foi feita.

Verificando a propagação do registro DNS

Depois de criar o registro TXT solicitado pelo Certbot, é importante confirmar que ele já propagou antes de seguir com a validação — DNS pode levar alguns minutos (ou, em casos raros, horas) para propagar globalmente.

Ferramentas online que ajudam nessa checagem:

Ou, diretamente pelo terminal:

dig TXT _acme-challenge.bagarote.dev.br
Enter fullscreen mode Exit fullscreen mode

Se o resultado retornar o valor TXT esperado, o registro já propagou e a validação do Certbot deve prosseguir sem problemas.

Considerações finais

Diferente do fluxo automatizado com cert-manager dentro de um cluster Kubernetes, o Certbot exige mais intervenção manual — principalmente no caso de certificados wildcard, que dependem da criação manual de registros DNS a cada renovação (a menos que seu provedor de DNS tenha um plugin de automação compatível com o Certbot, o que elimina essa etapa manual). Ainda assim, para servidores isolados fora do cluster, é uma solução confiável, gratuita e amplamente documentada para manter certificados TLS válidos.

Top comments (0)