Certificado HTTPS grátis num VPS com certbot
Instale o certbot, obtenha um certificado Let’s Encrypt para o seu domínio e confirme que a renovação automática funciona.
A Let’s Encrypt emite certificados TLS sem custo, válidos 90 dias. O certbot automatiza o pedido e a renovação. Duas condições: o domínio tem de apontar já para o seu VPS, e as portas 80 e 443 têm de estar acessíveis a partir da Internet.
- A Let’s Encrypt emite certificados grátis válidos 90 dias, que o certbot renova sozinho.
- O domínio tem de apontar já para o VPS, e as portas 80 e 443 têm de estar abertas.
- Faça um teste de renovação com --dry-run logo após a instalação.
Preparar o servidor
O certbot precisa de um nome que resolva para o VPS (veja o artigo sobre registos A) e de um servidor web à escuta na porta 80. Em Debian ou Ubuntu, instale o Nginx e o certbot com o plugin.
- sudo apt update && sudo apt install -y nginx certbot python3-certbot-nginx
- sudo ufw allow 'Nginx Full' se a firewall UFW estiver ativa (caso contrário, ignore esta linha).
- Confirme que o site responde em HTTP antes de continuar: curl -I http://example.com.
Pedir o certificado
Um só comando configura o Nginx e descarrega o certificado. O certbot propõe depois redirecionar o HTTP para HTTPS: aceite, salvo se tiver um motivo para não o fazer.
- sudo certbot --nginx -d example.com -d www.example.com
- Os ficheiros estão em /etc/letsencrypt/live/example.com/: fullchain.pem e privkey.pem.
- Teste a configuração e recarregue: sudo nginx -t && sudo systemctl reload nginx.
Verificar a renovação
Um certificado expira ao fim de 90 dias. Os pacotes de Debian e Ubuntu instalam um temporizador systemd que tenta renovar duas vezes por dia. Basta confirmar que funciona.
- systemctl list-timers | grep certbot: o temporizador deve mostrar a próxima execução.
- sudo certbot renew --dry-run: simula uma renovação sem alterar os certificados.
- sudo certbot certificates: mostra a data de expiração de cada certificado.
Perguntas frequentes
Porque é que o pedido falha com «Timeout during connect»?
O servidor da Let’s Encrypt não chega à porta 80: o DNS ainda não aponta para o VPS, ou a firewall bloqueia a ligação. Verifique o dig e depois sudo ufw status.
Preciso de um certificado por subdomínio?
Não. Um certificado pode cobrir vários nomes. Acrescente um -d por cada nome extra, por exemplo -d example.com -d www.example.com, e volte a executar o comando.
Consigo um certificado para um serviço que não usa HTTP?
Sim, por validação DNS, acrescentando um registo TXT temporário. O método depende do seu fornecedor DNS: é preciso instalar o plugin certbot correspondente.