Instalar um certificado SSL gratuito com Let's Encrypt e Certbot
Certificado SSL gratuito para o seu servidor Linux: veja como instalar o Certbot no Debian e no Ubuntu, emitir um certificado Let's Encrypt para o Apache e deixá-lo renovar-se automaticamente.
Um certificado SSL da Let's Encrypt não custa nada, fica pronto em poucos minutos e é aceite por todos os navegadores correntes. Neste guia vai ativar o HTTPS num servidor Linux próprio com Apache: no Debian 13, Debian 12, Ubuntu 24.04 LTS e Ubuntu 22.04 LTS.
A emissão fica a cargo do Certbot, o cliente ACME oficial da Electronic Frontier Foundation. O Certbot pede o certificado, inscreve-o na configuração do Apache e renova-o depois de forma autónoma através de um timer systemd.
Pré-requisitos
- Um domínio cujo registo A (e, em IPv6, também o registo AAAA) aponte para o seu vServer ou servidor root.
- Um servidor web Apache2 em funcionamento, com um VirtualHost para esse domínio.
- Acesso root através de SSH.
- A porta 80 e a porta 443 têm de estar acessíveis a partir do exterior. A Let's Encrypt verifica o domínio pela porta 80.
Comece por confirmar que o domínio aponta mesmo para o seu servidor. Para isso, introduza o seu domínio em https://check-host.net/. Se aí aparecer o endereço IP do seu servidor, pode continuar. Se o DNS ainda apontar para um destino antigo, aguarde a atualização, caso contrário a emissão falha.
Atualizar o sistema
Comece por colocar a lista de pacotes e os pacotes instalados no estado mais recente:
apt update && apt upgrade -y
Instalar o Certbot
Existem dois caminhos habituais. O pacote da distribuição é o mais simples e chega perfeitamente para a maioria dos servidores. O pacote Snap traz sempre a versão mais recente do Certbot e é o caminho recomendado oficialmente pela Electronic Frontier Foundation.
Variante 1: Certbot a partir do repositório da distribuição
No Debian e no Ubuntu, o Certbot e o plugin do Apache estão diretamente nas fontes de pacotes:
apt install certbot python3-certbot-apache -y
O pacote "python-certbot-apache", outrora muito divulgado, pertencia ao Python 2 e já não existe. Em todas as versões atuais do Debian e do Ubuntu, o nome de pacote correto é "python3-certbot-apache".
Variante 2: instalar o Certbot através do snap
Se quiser dispor sempre da versão mais recente do Certbot, por exemplo para plugins DNS ou certificados wildcard, instale o Certbot como Snap. Remova antes uma eventual instalação por pacote, para que as duas não se atrapalhem:
apt remove certbot -y
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Emitir o certificado e integrá-lo no Apache
O caminho mais rápido passa pelo plugin do Apache. O Certbot lê os VirtualHosts existentes, pede o certificado e escreve ele próprio a configuração SSL adequada:
certbot --apache -d MeuDominio.pt -d www.MeuDominio.pt
Se preferir manter o controlo sobre a configuração do Apache, pode fazer a verificação do domínio passar pelo diretório webroot. Indique nesse caso exatamente o diretório que o VirtualHost utiliza como DocumentRoot:
certbot --authenticator webroot --installer apache -w /var/www/MeuDominio.pt -d MeuDominio.pt -d www.MeuDominio.pt
Se o seu site estiver no diretório predefinido, o comando é o seguinte:
certbot --authenticator webroot --installer apache -w /var/www/html/ -d MeuDominio.pt -d www.MeuDominio.pt
As perguntas do Certbot
No primeiro arranque, o Certbot faz algumas perguntas:
- Endereço de e-mail: indique um endereço que leia mesmo. É por aí que a Let's Encrypt envia o aviso quando uma renovação não acontece.
- Condições de utilização: com "A" está a aceitá-las.
- Newsletter da Electronic Frontier Foundation: "Y" para sim, "N" para não. É facultativo e não tem qualquer influência sobre o certificado.
- Redirecionamento para HTTPS: escolha a opção "Redirect", para que o Apache encaminhe automaticamente todos os pedidos HTTP para HTTPS.
De seguida, o Certbot mostra o caminho do certificado. Os ficheiros ficam em /etc/letsencrypt/live/MeuDominio.pt/. Não edite estes ficheiros à mão, eles são reescritos a cada renovação.
Verificar a renovação automática
Um certificado da Let's Encrypt é válido durante 90 dias. O Certbot renova-o automaticamente assim que restarem menos de 30 dias de validade. Para isso, o pacote traz um timer systemd. Verifique se está ativo:
systemctl list-timers certbot.timer
Se o timer não estiver ativo, ative-o:
systemctl enable --now certbot.timer
Teste a seguir o processo em modo de ensaio. Nada é emitido, o Certbot limita-se a simular a renovação:
certbot renew --dry-run
Para que o Apache utilize mesmo o novo certificado depois de uma renovação, registe uma única vez um deploy-hook:
certbot renew --deploy-hook "systemctl reload apache2"
Ver e remover certificados
Uma visão geral de todos os certificados geridos no servidor obtém-se assim:
certbot certificates
Um certificado de que já não precisa remove-se desta forma, para que o Certbot não continue a tentar renová-lo:
certbot delete --cert-name MeuDominio.pt
Erros frequentes
- "Could not bind to port 80": outro serviço está a ocupar a porta 80. Pare-o ou utilize o método webroot, que trabalha com o Apache já em execução.
- "Invalid response from http://.../.well-known/acme-challenge/...": o domínio não aponta para este servidor, uma firewall bloqueia a porta 80, ou o diretório webroot indicado não corresponde ao VirtualHost.
- "The requested apache plugin does not appear to be installed": falta o pacote "python3-certbot-apache".
- "too many certificates already issued": atingiu um limite da Let's Encrypt. Daqui em diante, teste as configurações com
--dry-runantes de pedir um certificado verdadeiro. - O navegador continua a mostrar um aviso: limpe a cache do navegador e verifique se o Apache foi recarregado depois da emissão.
Redirecionar HTTP para HTTPS de forma permanente
Se não ativou o redirecionamento durante as perguntas do Certbot, pode acrescentá-lo a qualquer momento. Descrevemos como isso se faz através de um ficheiro .htaccess num artigo dedicado ao redirecionamento de HTTP para HTTPS.
Perguntas frequentes
Quanto custa um certificado SSL da Let's Encrypt?
Durante quanto tempo é válido um certificado Let's Encrypt?
Tenho de renovar o certificado à mão?
A Let's Encrypt também funciona para subdomínios?
Porque é que a verificação do domínio falha?
2023-2026 KernelHost GmbH. Todos os direitos reservados. Este guia está protegido por direitos de autor. A sua republicação noutros sites, na íntegra, em parte ou de forma editada, não é permitida sem o nosso consentimento por escrito. Citações com indicação da fonte e ligação são expressamente bem-vindas.

