Let's Encrypt e Certbot na Prática: HTTPS Grátis, Automático e Sem Sustos
Como funciona o Let's Encrypt, o protocolo ACME, os desafios HTTP-01 e DNS-01, e como usar o Certbot para emitir e renovar certificados sozinho.
Neste artigo
Houve um tempo em que colocar HTTPS num site era caro e chato: você comprava um certificado por ano, provava sua identidade, gerava chaves na mão, colava textos no painel e torcia para não errar nenhum passo. O cadeado era um luxo reservado a lojas e bancos. Isso mudou de forma radical quando o Let's Encrypt apareceu e fez duas coisas ao mesmo tempo: tornou o certificado gratuito e, mais importante, tornou a emissão automática. Hoje não há desculpa técnica nem financeira para um site rodar sem cadeado.
Só que "grátis e automático" esconde algumas engrenagens que vale entender, porque é onde as pessoas se perdem. O certificado do Let's Encrypt dura pouco de propósito, a renovação precisa acontecer sozinha, e existe mais de uma forma de provar que o domínio é seu — cada uma com suas armadilhas. Este guia é sobre a prática: o que é o Let's Encrypt, como o protocolo por trás dele funciona em linguagem humana, e como o Certbot emite e renova seus certificados sem que você precise pensar nisso de novo. O foco aqui é a operação, não a teoria de tipos de certificado.
O que o Let's Encrypt realmente mudou
O Let's Encrypt é uma Autoridade Certificadora (CA) — a entidade em que os navegadores confiam para atestar que aquele cadeado pertence mesmo àquele domínio. A diferença dele para as CAs tradicionais é o modelo: emissão gratuita, para qualquer um, e totalmente por software. Você não fala com um humano, não envia documentos; um programa prova que você controla o domínio e o certificado sai em segundos.
Para que isso seja seguro, o Let's Encrypt fez uma escolha deliberada: os certificados valem só cerca de 90 dias. Parece incômodo, mas é a chave da segurança do modelo. Validade curta significa que um certificado vazado tem pouca janela de abuso e que ninguém pode ficar dependendo de um processo manual anual — a renovação tem que ser automática. Em vez de um evento raro e estressante uma vez por ano, o certificado vira algo que se renova sozinho a cada dois meses, sem você notar.
- Só certificados DV. O Let's Encrypt emite certificados de Validação de Domínio: ele prova que você controla o domínio, nada mais. Não existe validação de empresa (OV/EV) — para a esmagadora maioria dos sites, DV é exatamente o suficiente.
- Validade curta, renovação automática. Os ~90 dias forçam a automação, que é o que torna o sistema confiável. Um certificado que se renova sozinho nunca "vence de surpresa".
- Gratuito e ilimitado (dentro de limites de taxa). Você emite quantos precisar, respeitando os limites de emissão por semana para não abusar da infraestrutura.
ACME: o protocolo que automatiza tudo
O que permite emitir um certificado sem intervenção humana é um protocolo chamado ACME (Automatic Certificate Management Environment). Em português claro: é a conversa padronizada entre o seu servidor e a CA para provar que o domínio é seu e receber o certificado. O Certbot é apenas um dos programas ("clientes ACME") que falam esse protocolo por você.
O fluxo, sem jargão, é este: o seu cliente ACME pede um certificado para seudominio.com; o Let's Encrypt responde "prove que você controla esse domínio, faça isto"; o cliente cumpre o desafio; o Let's Encrypt verifica; se bater, emite o certificado e o cliente o instala. Tudo isso em segundos. A parte interessante — e onde moram as decisões — é como você prova o controle do domínio. Existem dois desafios principais.
Desafio HTTP-01: prove pela porta 80
No desafio HTTP-01, o Let's Encrypt pede que você coloque um arquivo com um conteúdo específico num caminho conhecido do seu site (/.well-known/acme-challenge/...). Ele então acessa esse arquivo pela internet, na porta 80, e se o conteúdo bater, confirma que quem respondeu controla o domínio. É o desafio mais comum e mais simples, porque não exige mexer no DNS.
- Precisa da porta 80 aberta. O Let's Encrypt bate no seu servidor via HTTP para ler o arquivo. Firewall bloqueando a 80 é a causa número um de falha aqui.
- Valida um host por vez. HTTP-01 prova o domínio exato que respondeu. Não serve para emitir curinga (wildcard).
- Ideal para o caso comum. Um site, alguns subdomínios explícitos, servidor acessível na internet: HTTP-01 resolve sem complicação.
Desafio DNS-01: prove pelo DNS (e ganhe wildcard)
No desafio DNS-01, em vez de um arquivo no site, você cria um registro TXT específico no DNS do domínio. O Let's Encrypt consulta esse TXT e confirma o controle. Ele é mais trabalhoso de automatizar (precisa que o cliente ACME tenha acesso à API do seu provedor de DNS), mas tem um superpoder: é o único que emite certificados curinga (*.seudominio.com), que cobrem todos os subdomínios de uma vez.
- Emite wildcard. Um
*.seudominio.comcobreapp.,blog.,loja.e qualquer outro subdomínio com um único certificado. - Não depende da porta 80 nem do servidor estar exposto. A prova é no DNS, então funciona até para serviços internos que não recebem tráfego público.
- Exige automação do DNS. Para renovar sozinho, o Certbot precisa de um plugin que crie/remova o TXT via API do seu provedor de DNS. Fazer na mão a cada renovação anula a graça.
Certbot na prática: emitir o certificado
O Certbot é o cliente ACME oficial e mais usado. Ele fala com o Let's Encrypt, resolve o desafio, baixa o certificado e — o pulo do gato — configura o seu servidor web e agenda a renovação. Ele funciona por plugins, e escolher o plugin certo é metade do trabalho.
- Plugin
nginx/apache. O Certbot lê a configuração do seu servidor web, emite o certificado e edita os arquivos de configuração para já servir HTTPS. É o caminho mais automático quando você roda Nginx ou Apache num VPS. - Plugin
webroot. Você aponta o Certbot para a pasta pública do site e ele coloca o arquivo de desafio ali, sem tocar na configuração do servidor. Bom quando você quer controlar a configuração à mão. - Plugin
standalone. O Certbot sobe um servidorzinho temporário na porta 80 só para responder ao desafio. Útil quando ainda não há servidor web rodando (mas exige a porta 80 livre no momento). - Plugins de DNS. Para DNS-01, há plugins específicos por provedor (Cloudflare, Route 53 e outros) que criam o TXT automaticamente via API — essenciais para wildcard renovável.
Antes de emitir "pra valer", use sempre o modo de teste (--dry-run). Ele executa todo o fluxo contra o ambiente de homologação do Let's Encrypt, provando que os desafios passam, sem gastar uma emissão real nem esbarrar nos limites de taxa. Só depois de o --dry-run passar limpo é que você emite o certificado de produção. Esse hábito evita queimar cota por causa de um firewall fechado ou um DNS ainda não propagado.
A renovação automática (a parte que importa de verdade)
Emitir o certificado é o evento único; renovar é o que mantém o site no ar mês após mês. Aqui está a boa notícia: o Certbot já cuida disso. Ao instalar, ele cria uma tarefa agendada (um timer do systemd ou uma entrada de cron) que roda duas vezes por dia e verifica se algum certificado está perto de vencer. Se estiver (normalmente a 30 dias do fim), ele renova sozinho e recarrega o servidor web.
- Verifica com folga. A tarefa roda com frequência, mas só renova quando falta pouco — não há risco de renovar cedo demais nem de perder o prazo.
- Recarregue o serviço no hook. De nada adianta renovar o arquivo se o Nginx/Apache continua servindo o certificado velho em memória. Um
--deploy-hookque rodareloadno servidor garante que o novo entra em vigor. - Teste a renovação sem esperar 90 dias. Rodar a renovação em modo de teste confirma, hoje, que tudo vai funcionar quando o prazo real chegar.
Quando o painel já resolve — e quando você está sozinho
Nem todo mundo precisa mexer no Certbot. Se você está numa hospedagem com cPanel, é muito provável que o AutoSSL já emita e renove certificados gratuitos automaticamente para os seus domínios, sem você fazer nada. Hosts gerenciados e plataformas modernas também costumam cuidar do HTTPS por baixo dos panos. Nesses casos, o melhor Certbot é o que você não precisa rodar.
A hora de botar a mão na massa é quando você tem um VPS "pelado" — um servidor onde você mesmo instalou o Nginx ou o Apache e é o único responsável pelo TLS. Aí o Certbot é o seu melhor amigo: ele transforma uma tarefa antes penosa em dois comandos e um timer. Saber qual dos dois mundos você está evita tanto o retrabalho (rodar Certbot onde o painel já faz) quanto o esquecimento (achar que "vem pronto" num VPS onde nada vem).
Os erros que mais derrubam a emissão
Quando a emissão falha, a causa quase sempre está numa destas quatro. Conhecê-las de antemão economiza uma tarde de tentativa e erro.
- Porta 80 fechada (HTTP-01). O firewall ou o provedor bloqueia a 80 e o Let's Encrypt não consegue ler o arquivo de desafio. Abra a 80 antes de emitir.
- DNS ainda não propagado. Você emite para um domínio cujo registro acabou de ser criado e ainda não propagou. Espere o DNS resolver globalmente antes de tentar.
- Limites de taxa do Let's Encrypt. Emissões repetidas do mesmo domínio em pouco tempo (típico de quem fica tentando por causa de outro erro) esbarram no limite semanal. Use
--dry-runjustamente para não gastar cota real depurando. - Renovação que falha em silêncio. O caso mais perigoso: o timer parou, ninguém percebeu, e o certificado vence sozinho. Monte um alerta simples — um monitor externo que avisa quando faltam poucos dias para o vencimento — para nunca ser pego de surpresa.
Fechando o cadeado sem drama
O Let's Encrypt tirou o HTTPS do território dos especialistas e o colocou ao alcance de qualquer site, e o Certbot é a ferramenta que torna isso quase invisível. Entenda que o certificado dura pouco de propósito, escolha o desafio certo (HTTP-01 para o caso comum, DNS-01 quando precisa de wildcard), teste sempre com --dry-run antes de emitir de verdade, e garanta que a renovação automática está de pé com o hook de reload no lugar. Se o seu painel já cuida disso, ótimo — deixe cuidar. Se você está num VPS, dois comandos resolvem hoje e um timer resolve para sempre. O único erro grave é achar que, uma vez emitido, o certificado se cuida sozinho sem que ninguém verifique se a renovação continua funcionando.