Os navegadores e os motores de pesquisa esperam HTTPS, e a Let's Encrypt fornece certificados sem custo. Num VPS Linux Infrawire com AlmaLinux 9, o Certbot pode obter o certificado, alterar a configuração do Apache e renová-lo sozinho. Os mesmos passos servem para o Rocky Linux 9.
📋 Pré-requisitos
- Um VPS AlmaLinux 9 com acesso root ou sudo (IP e palavra-passe na sua área de cliente).
- Um domínio,
example.com, cujo registo A (e AAAA para IPv6) aponte paraVPS_IP. Aguarde primeiro a propagação do DNS. - O Apache (httpd) a servir o site em HTTP na porta 80.
1. Instalar o Apache e abrir a firewall
Se o Apache ainda não estiver instalado, instale-o e arranque-o. Depois abra HTTP e HTTPS na firewalld; a porta 80 é necessária para a validação da Let's Encrypt.
Bashdnf install -y httpd systemctl enable --now httpd firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload firewall-cmd --list-services
2. Criar um host virtual para o seu domínio
O Certbot procura um ServerName que corresponda ao seu domínio, por isso crie um host virtual dedicado.
Bashmkdir -p /var/www/example.com/public_html echo "Hello" > /var/www/example.com/public_html/index.html
Crie /etc/httpd/conf.d/example.com.conf:
Apache1<VirtualHost *:80> 2 ServerName example.com 3 ServerAlias www.example.com 4 DocumentRoot /var/www/example.com/public_html 5</VirtualHost>
Verifique a sintaxe e recarregue:
Bashapachectl configtest systemctl reload httpd
3. Instalar o Certbot e o mod_ssl
O Certbot vem do repositório EPEL. O mod_ssl fornece o módulo TLS do Apache e um certificado por omissão de que o httpd precisa para escutar na porta 443.
Bashdnf install -y epel-release dnf install -y certbot python3-certbot-apache mod_ssl
4. Pedir o certificado
Execute o Certbot com o plugin do Apache. Valida o domínio por HTTP, escreve um novo host virtual *-le-ssl.conf e pode acrescentar o redirecionamento de HTTP para HTTPS.
Bashcertbot --apache -d example.com -d www.example.com
Introduza um e-mail real (usado nos avisos de expiração), aceite os termos e escolha o redirecionamento quando perguntado. Cada nome indicado com -d tem de resolver para este servidor, caso contrário a validação falha.
Se o SELinux estiver em modo enforcing (o predefinido), não é preciso nada de especial numa instalação normal. Não o desative para contornar um erro.
5. Verificar a renovação automática
Os certificados da Let's Encrypt duram 90 dias. No AlmaLinux 9 o pacote instala um temporizador systemd que corre duas vezes por dia e só renova certificados perto de expirar.
Bashsystemctl list-timers | grep certbot systemctl status certbot-renew.timer
Se o temporizador não aparecer, ative-o:
Bashsystemctl enable --now certbot-renew.timer
Simule uma renovação sem tocar no certificado real:
Bashcertbot renew --dry-run
A última linha deve indicar que todas as renovações simuladas tiveram êxito. O Apache é recarregado automaticamente após uma renovação real.
Verificação
Bashcertbot certificates curl -I https://example.com curl -I http://example.com
O primeiro comando lista os domínios e a data de expiração. O pedido HTTPS deve devolver 200 e o pedido HTTP deve responder com um 301 para o endereço HTTPS. No navegador, o cadeado deve mostrar um certificado válido emitido pela Let's Encrypt. Para ver a cadeia completa pode executar openssl s_client -connect example.com:443 -servername example.com.
Resolução de problemas
- Falha do desafio ou tempo esgotado na validação: o DNS ainda não aponta para o servidor ou a porta 80 está bloqueada. Verifique
dig +short example.com,firewall-cmd --list-servicese qualquer firewall à frente do VPS. - O Certbot não encontra um host virtual correspondente: o
ServerNameouServerAliasem/etc/httpd/conf.d/não corresponde ao domínio indicado. Corrija, executeapachectl configteste tente de novo. Também pode usarcertbot certonly --apachee configurar os caminhos você mesmo. - Demasiados certificados ou validações falhadas (limite de pedidos): a Let's Encrypt limita tentativas repetidas. Teste primeiro com
certbot --apache --dry-rune aguarde antes de repetir. - Site inacessível na 443 após a instalação: o HTTPS não está aberto na firewalld ou o httpd não foi recarregado. Execute
firewall-cmd --permanent --add-service=https,firewall-cmd --reloadesystemctl restart httpd.
🔐 O seu site Apache no AlmaLinux 9 já serve HTTPS e renova o certificado sozinho.