Configuração de HTTPS (SSL/TLS) usando Let's Encrypt
1. Sobre o que é esta aula e por que isso é necessário
No mundo atual, o HTTPS já virou padrão pra todos os sites. Se você quer que os seus usuários se sintam seguros e que o Google não rebaixe o seu site no ranking das buscas (sim, HTTPS afeta SEO), você precisa configurar SSL/TLS. O protocolo HTTPS protege os dados transmitidos entre o usuário e o servidor através de criptografia, evitando que eles sejam interceptados por hackers.
Nesta aula, vamos passo a passo aprender como conectar HTTPS ao seu servidor web de forma gratuita usando o Let's Encrypt. Let's Encrypt é uma autoridade de certificação (CA) confiável que oferece certificados gratuitos e ferramentas para sua instalação. Também vamos aprender a renovar os certificados automaticamente pra evitar dores de cabeça relacionadas à expiração.
HTTP vs HTTPS
HTTP (Hypertext Transfer Protocol) é o protocolo de transferência de dados. Ele é ótimo pra ver memes de gatos, MAS! Se alguém se conectar à sua rede Wi-Fi (por exemplo, num café), poderá interceptar os dados que você manda pro servidor (horrível, sua senha vira "senha deles").
HTTPS (Hypertext Transfer Protocol Secure) é a versão do HTTP com criptografia adicionada. Os dados transmitidos entre o cliente e o servidor são protegidos com SSL/TLS (Secure Sockets Layer / Transport Layer Security). Hackers não conseguirão mais ver o conteúdo dos "pacotes" de dados, mesmo que consigam interceptá-los.
2. Instalando o Let's Encrypt e Certbot
Certbot é uma ferramenta dos desenvolvedores do Let's Encrypt que facilita a obtenção e configuração de certificados SSL para o seu servidor web. Ele é inteligente o suficiente para trabalhar sozinho com Nginx ou Apache, fazendo todo o trabalho chato pra gente. Vamos começar a instalação.
Instalando o Certbot
Certifique-se de que seu servidor está atualizado:
sudo apt-get update
sudo apt-get upgrade
Agora vamos instalar o Certbot e seus plugins:
Para Nginx:
sudo apt-get install certbot python3-certbot-nginx
Para Apache:
sudo apt-get install certbot python3-certbot-apache
O próprio Certbot é apenas código Python, mantido ativamente pela comunidade. Ele se integra facilmente com a maioria dos servidores.
3. Obter certificado SSL com Certbot
Para Nginx
O Certbot pode configurar automaticamente o HTTPS para o seu site se você estiver usando Nginx. Digite:
sudo certbot --nginx
O Certbot vai escanear seus hosts virtuais (server
blocks na configuração). Ele vai perguntar para qual domínio você quer configurar o HTTPS. Certifique-se de que o domínio aponta para seu servidor via DNS (por exemplo, usando um registro A).
Exemplo de saída:
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: example.com
2: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Escolha o seu domínio (por exemplo, 1).
O Certbot vai configurar automaticamente a configuração do Nginx e verificar. Após a instalação bem-sucedida, você verá uma mensagem como:
Congratulations! Your certificate and chain have been saved ...
Agora o seu site está disponível em HTTPS. Você pode verificar isso acessando https://example.com no navegador.
Para Apache
Se você estiver usando Apache, o comando será um pouco diferente:
sudo certbot --apache
O Certbot também vai escanear seus hosts virtuais (<VirtualHost>
blocks) e vai oferecer configurar o HTTPS para os domínios selecionados. Escolha os que você precisar e o Certbot fará tudo para você.
Depois de terminar o processo, você verá novamente a mensagem de parabéns e poderá verificar a disponibilidade do seu site via HTTPS.
4. Atualização Automática de Certificados
Os certificados do Let's Encrypt são válidos por apenas 90 dias, então precisam ser renovados regularmente. O Certbot pode fazer isso automaticamente, mas precisamos garantir que tudo está configurado corretamente.
Verificando o Prazo de Validade dos Certificados
Você pode verificar quando o seu certificado expira:
sudo certbot certificates
A saída mostrará seus domínios e a data de expiração dos seus certificados.
Configuração de Atualização Automática
Durante a instalação, o Certbot adiciona automaticamente uma tarefa no Cron ou Systemd Timer para verificar atualizações. Se você quiser ter certeza de que tudo está funcionando, adicione uma tarefa de teste no Cron:
sudo crontab -e
Adicione a linha:
0 0 * * * certbot renew --quiet
Este comando verifica e renova os certificados diariamente à meia-noite. O parâmetro --quiet
desativa a saída de informações desnecessárias.
Atualização Manual
Se você quiser renovar os certificados manualmente (por exemplo, para testes), utilize:
sudo certbot renew
5. Habilitando redirecionamento automático HTTP → HTTPS
Seu site ainda pode estar acessível via HTTP, mas isso não é seguro. Vamos configurar o redirecionamento automático de todas as solicitações para HTTPS.
Para Nginx
O Certbot pode configurar automaticamente o redirecionamento ao emitir o certificado. Se você não habilitou isso anteriormente, adicione o redirecionamento manualmente no seu arquivo de configuração de host virtual:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Reinicie o Nginx para aplicar as mudanças:
sudo systemctl restart nginx
Para Apache
O Certbot também oferece habilitar redirecionamentos automaticamente. Se você pulou essa etapa, adicione no seu arquivo de host virtual:
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
Reinicie o Apache:
sudo systemctl restart apache2
6. Depuração de erros
Se algo deu errado, comece verificando os logs:
Para Nginx
sudo tail -f /var/log/nginx/error.log
Para Apache
sudo tail -f /var/log/apache2/error.log
Testando a configuração
Verifique também a configuração do servidor web:
Para Nginx:
sudo nginx -t
Para Apache:
sudo apachectl configtest
Verificação do HTTPS
Certifique-se de que seu site está acessível via HTTPS:
curl -I https://example.com
Você deve ver o status 200 OK
e a linha Strict-Transport-Security
, o que significa que o HTTPS está funcionando.
Agora você está pronto para criar sites HTTPS seguros e protegidos. Seus usuários vão ficar felizes, o Google também, e você poderá dormir tranquilo sabendo que seus dados estão protegidos contra os vilões da internet.
GO TO FULL VERSION