ACLClouds
ACLClouds

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.