CodeGym /Cursos /Docker SELF /Configuração de HTTPS (SSL/TLS) usando Let's Encrypt

Configuração de HTTPS (SSL/TLS) usando Let's Encrypt

Docker SELF
Nível 7 , Lição 3
Disponível

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
    
Curiosidade:

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.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION