15 min de leitura · Guia técnico
Configurar Certbot auto renew é ativar e validar a renovação automática dos certificados Let’s Encrypt para evitar SSL expirado e perda de acesso HTTPS. Para fazer isso com segurança, siga estes passos:
- Confirme que o certificado atual existe e está associado ao domínio correto.
- Verifique se há timer do systemd ou cron chamando a renovação automática.
- Execute um teste com certbot renew dry-run antes de alterar produção.
- Configure um hook para recarregar Nginx ou Apache após a renovação.
- Monitore logs do Certbot e teste o acesso HTTPS pelo navegador.
Pré-requisitos para configurar Certbot auto renew
Certbot auto renew depende de DNS correto, porta de validação acessível e serviço web funcionando. Antes de começar, garanta que você tem acesso administrativo ao servidor, porque os comandos abaixo consultam certificados em /etc/letsencrypt, timers do sistema e serviços como Nginx ou Apache.
- Acesso SSH com usuário root ou usuário com sudo. Se precisar revisar a conexão, veja Acessando servidores VPS Linux da AviraHost.
- Servidor Linux com Certbot já instalado e certificado Let’s Encrypt emitido para o domínio.
- Domínio apontando corretamente para o IP do servidor, com registros DNS ativos.
- Porta 80 liberada para validação HTTP quando o certificado usa desafio HTTP.
- Nginx ou Apache instalado e respondendo pelo site que usa HTTPS.
- Permissão para recarregar o serviço web após renovar o certificado SSL.
O objetivo é evitar que a renovação funcione no Certbot, mas o site continue servindo o certificado antigo porque o servidor web não foi recarregado. Em ambientes com vários sites, faça as validações por domínio e nunca assuma que todos os certificados usam o mesmo método de renovação.
Como validar o certificado Let’s Encrypt antes da renovação automática
Renovar certificado Let’s Encrypt automaticamente começa com uma checagem simples: saber quais certificados o Certbot gerencia, quais nomes estão incluídos e quando eles expiram. Ao rodar este comando, você verá os certificados conhecidos pelo Certbot e os caminhos usados pelo Nginx ou Apache.
sudo certbot certificates
Output esperado:
Certificate Name: exemplo.com.br
Domains: exemplo.com.br www.exemplo.com.br
Expiry Date: data de expiração do certificado
Certificate Path: /etc/letsencrypt/live/exemplo.com.br/fullchain.pem
Private Key Path: /etc/letsencrypt/live/exemplo.com.br/privkey.pem
Confirme se o domínio principal e o subdomínio com www aparecem na mesma emissão, caso ambos sejam usados no site. Se um domínio estiver ausente, a renovação automática não vai proteger esse nome específico. Também vale comparar o caminho exibido pelo Certbot com o caminho configurado no virtual host do Nginx ou Apache.
Para verificar se o site está respondendo em HTTPS no servidor, use uma chamada local ou externa. Essa etapa não substitui a validação no navegador, mas ajuda a identificar rapidamente certificado ausente, redirecionamento incorreto ou serviço web fora do ar.
curl -I https://exemplo.com.br
Output esperado:
HTTP/2 200
server: nginx
ou
HTTP/1.1 200 OK
Server: Apache
Se o site ainda acessa por HTTP e você quer padronizar o tráfego seguro, veja também Como redirecionar um site http para https?. O redirecionamento não renova o certificado, mas reduz confusão operacional ao garantir que usuários e mecanismos de busca usem a URL segura.
Como checar o timer do Certbot no systemd ou cron
Timer systemd Certbot é uma das formas mais comuns de executar a renovação automática sem intervenção manual. Em muitas instalações, o Certbot registra um timer que chama periodicamente o comando de renovação. A primeira verificação é listar timers relacionados ao Certbot.
systemctl list-timers --all | grep -i certbot
Output esperado:
certbot.timer loaded active waiting
ou
snap.certbot.renew.timer loaded active waiting
Se o timer aparecer como ativo e aguardando, o agendamento existe. Se não aparecer nada, pode haver renovação por cron, instalação diferente do Certbot ou ausência de agendamento. Para checar o status do timer encontrado, use o nome exibido no seu servidor.
sudo systemctl status certbot.timer
Output esperado:
Loaded: loaded
Active: active
Trigger: próxima execução agendada
Quando o timer não estiver ativo, habilite apenas depois de confirmar que o Certbot está instalado e que o certificado atual é válido. Esse comando não renova imediatamente o certificado; ele apenas ativa o agendamento no systemd.
sudo systemctl enable --now certbot.timer
Output esperado:
Created symlink
ou
certbot.timer enabled and started
Em servidores que usam cron, procure entradas relacionadas ao Certbot. A saída pode variar conforme a distribuição e o método de instalação.
sudo grep -R "certbot" /etc/cron* /var/spool/cron 2>/dev/null
Output esperado:
/etc/cron.d/certbot: comando de renovação configurado
ou
sem saída, caso não exista agendamento por cron
Evite manter dois agendamentos diferentes renovando o mesmo certificado sem necessidade. Timer e cron duplicados normalmente não quebram o site, mas dificultam auditoria e podem mascarar falhas de hook ou logs.
Como testar a renovação com certbot renew dry-run
Certbot renew dry-run é o teste mais importante antes de confiar na renovação automática. Ele simula a renovação, valida domínio, permissões e integração com o servidor web sem substituir o certificado em produção.
sudo certbot renew --dry-run
Output esperado:
Congratulations, all simulated renewals succeeded
Se aparecer mensagem de sucesso, a parte principal da renovação está saudável. Ainda assim, confirme se o servidor web será recarregado após uma renovação real. O Certbot pode renovar o arquivo no disco, mas Nginx ou Apache podem continuar usando o certificado antigo até receberem reload.
Quando o dry-run falha, leia a mensagem com atenção. Erros de validação HTTP costumam indicar que o domínio não aponta para o servidor, que a porta 80 está bloqueada ou que o webroot usado na emissão não corresponde ao site publicado. Antes de alterar DNS ou firewall, valide qual método o certificado usa.
sudo certbot renew --dry-run --verbose
Output esperado:
Processing renewal configuration file
Attempting to renew cert
Simulated renewal succeeded
ou
detalhes do erro de validação encontrado
Atenção: não apague diretórios em /etc/letsencrypt para tentar forçar uma renovação. Essa ação pode remover arquivos usados pelo HTTPS em produção. Se precisar corrigir um certificado emitido com nomes errados, prefira emitir novamente com os domínios corretos e só depois ajustar a configuração do site.
Como recarregar Nginx ou Apache após renovar SSL
Recarregar Nginx após renovar SSL evita perda de acesso HTTPS causada por certificado renovado no disco, mas não aplicado pelo servidor web. Antes de criar qualquer hook, teste a configuração do serviço. No Nginx, o comando abaixo valida os arquivos de configuração sem reiniciar o serviço.
sudo nginx -t
Output esperado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Se o teste estiver correto, recarregue o Nginx. Use reload em vez de restart quando possível, pois ele aplica a nova configuração com menor impacto sobre conexões ativas.
sudo systemctl reload nginx
Output esperado:
sem saída em caso de sucesso
No Apache, valide a configuração antes do reload. O nome do serviço pode variar entre distribuições, mas em ambientes Debian e Ubuntu geralmente é apache2.
sudo apachectl configtest
Output esperado:
Syntax OK
sudo systemctl reload apache2
Output esperado:
sem saída em caso de sucesso
Para automatizar o reload somente quando houver renovação, use um deploy hook. O exemplo abaixo é adequado para Nginx. Ele será executado após uma renovação bem-sucedida.
sudo certbot renew --deploy-hook "systemctl reload nginx"
Output esperado:
Renewal configuration file updated
ou
Congratulations, all renewals succeeded
Para Apache, ajuste o serviço no hook.
sudo certbot renew --deploy-hook "systemctl reload apache2"
Output esperado:
Renewal configuration file updated
ou
Congratulations, all renewals succeeded
Depois do hook, rode novamente o dry-run para confirmar que a validação e o reload não retornam erro. Se você utiliza SSL gratuito em hospedagem ou servidor, este complemento ajuda a entender o benefício operacional do certificado: Lista Prática: 5 Vantagens de ter SSL gratuito no seu site.
Como monitorar logs do Certbot e evitar SSL expirado
SSL expirado normalmente é percebido tarde, quando o navegador já exibe alerta de conexão não segura. A prevenção é acompanhar logs, validar agendamento e testar o certificado periodicamente. O Certbot grava logs que ajudam a identificar falhas de renovação, hooks com erro e problemas de validação.
sudo tail -n 80 /var/log/letsencrypt/letsencrypt.log
Output esperado:
linhas recentes do Certbot
mensagens de renovação, validação ou erro
Também é útil checar se o timer executou recentemente. Em servidores com systemd, o journal mostra tentativas e falhas relacionadas ao serviço de renovação.
sudo journalctl -u certbot --no-pager -n 80
Output esperado:
logs recentes da unidade certbot
ou
mensagem informando ausência de entradas
Por fim, confira a data apresentada pelo certificado entregue pelo site. Esse comando consulta o certificado remoto e ajuda a confirmar o que o visitante realmente recebe, não apenas o que existe no disco do servidor.
echo | openssl s_client -connect exemplo.com.br:443 -servername exemplo.com.br 2>/dev/null | openssl x509 -noout -dates
Output esperado:
notBefore=data inicial do certificado
notAfter=data de expiração do certificado
Se o notAfter não mudou após uma renovação real, investigue reload do Nginx ou Apache, caminho de certificado no virtual host e presença de proxy reverso ou CDN entre usuário e servidor.
Problemas comuns e como resolver
Sintoma: o dry-run falha na validação do domínio
Causa: o domínio pode não apontar para o servidor correto, a porta 80 pode estar bloqueada ou o site pode estar respondendo por outro virtual host.
Solução: confirme o DNS do domínio, libere a porta 80 no firewall e verifique se o Nginx ou Apache responde ao domínio usado no certificado. Depois rode novamente sudo certbot renew --dry-run.
Sintoma: o certificado renova, mas o navegador ainda mostra SSL antigo
Causa: o Certbot atualizou os arquivos em /etc/letsencrypt, mas o serviço web não foi recarregado, ou o virtual host aponta para outro caminho de certificado.
Solução: teste a configuração do Nginx ou Apache, execute reload e configure um deploy hook. Em seguida, valide a data do certificado entregue com OpenSSL.
Sintoma: o timer do Certbot não aparece ativo
Causa: a instalação pode não ter criado timer systemd, o timer pode estar desabilitado ou a renovação pode estar configurada por cron.
Solução: procure entradas em cron, liste timers do systemd e habilite o timer correto quando aplicável. Evite criar agendamentos duplicados sem entender o método atual.
Sintoma: erro ao recarregar Nginx ou Apache no hook
Causa: há erro de sintaxe na configuração do servidor web, nome incorreto do serviço ou permissão insuficiente para executar reload.
Solução: rode nginx -t ou apachectl configtest, corrija a configuração e teste o reload manualmente antes de depender do hook do Certbot.
Perguntas frequentes sobre configurar Certbot auto renew
Como saber se o Certbot auto renew está funcionando?
Execute um teste de renovação com o modo de simulação do Certbot e verifique se não há erros de validação do domínio. Também confirme se existe um timer ou cron ativo responsável por chamar o comando de renovação automaticamente.
O que acontece se o certificado Let's Encrypt expirar?
Quando o certificado TLS expira, navegadores passam a exibir alertas de conexão não segura e o acesso HTTPS pode ser bloqueado ou causar desconfiança no usuário. A correção é renovar o certificado e recarregar o serviço web usado pelo site.
Preciso reiniciar o Nginx ou Apache depois de renovar o SSL?
Em muitos ambientes, é necessário recarregar o Nginx ou Apache para que o servidor web passe a usar o certificado renovado. O ideal é usar reload em vez de restart quando possível, pois isso aplica a nova configuração com menor impacto nas conexões ativas.
Posso testar a renovação do Certbot sem alterar o certificado atual?
Sim, o Certbot permite executar uma simulação de renovação para validar domínio, configuração e permissões sem substituir o certificado em produção. Esse teste é recomendado antes de depender da renovação automática.
Por que o Certbot não renova meu certificado automaticamente?
As causas mais comuns são timer ou cron desativado, falha na validação HTTP do domínio, bloqueio na porta 80 ou erro ao recarregar o servidor web. Verifique o agendamento, os logs do Certbot e se o domínio aponta corretamente para o servidor.
Conclusão
Configurar a renovação automática do Certbot sem perder HTTPS exige mais do que ativar um agendamento. O processo seguro combina validação do certificado, teste com dry-run, reload controlado do servidor web e monitoramento dos logs.
- Rode sudo certbot certificates e confirme se todos os domínios corretos aparecem no certificado.
- Teste a renovação com sudo certbot renew --dry-run antes de confiar no agendamento.
- Configure reload de Nginx ou Apache por deploy hook e monitore /var/log/letsencrypt/letsencrypt.log.
Leia também
- guia Certbot vs AutoSSL: qual protege melhor seu servidor Linux
- Como Configurar SSL Let's Encrypt Grátis no cPanel 2026
- Passo a passo para configurar acesso restrito por IP no SSH do VPS Linux
Precisa de ajuda com Certbot auto renew?
Se você hospeda sites em servidor Linux e quer reduzir riscos com SSL expirado, uma infraestrutura bem configurada ajuda a manter certificados, DNS e serviços web sob controle. A AviraHost oferece opções de VPS para quem precisa administrar aplicações com mais autonomia.