Tutorial

Como Proteger o Apache com o Let's Encrypt no Debian 10

Published on April 13, 2020
Português
Como Proteger o Apache com o Let's Encrypt no Debian 10

Introdução

A Let’s Encrypt é uma autoridade certificadora (CA) que fornece uma maneira descomplicada de obter e instalar certificados TLS/SSL gratuitos, habilitando assim protocolos HTTPS criptografados em servidores web. Ela simplifica o processo ao fornecer um cliente de software, o Certbot, que tenta automatizar a maioria (se não todas) das etapas necessárias. Atualmente, todo o processo de obtenção e instalação de um certificado é totalmente automatizado em Apache e Nginx.

Neste tutorial, você usará o Certbot para obter um certificado SSL gratuito para o Apache no Debian 10 e para configurar o seu certificado para renovação automática.

Este tutorial usará um arquivo de virtual host do Apache separado em vez do arquivo de configuração padrão. Recomendamos que você crie novos arquivos de virtual host do Apache para cada domínio, uma vez que isso ajuda a evitar erros comuns e mantém os arquivos padrão como uma configuração de backup.

Pré-requisitos

Para seguir este tutorial, será necessário:

Passo 1 — Instalando o Certbot

A primeira etapa para usar o Let’s Encrypt para obter um certificado SSL, é instalar o software Certbot no seu servidor.

No momento da escrita deste artigo, o Certbot não está disponível nos repositórios de software do Debian por padrão. Para baixar o software usando o apt, você precisará adicionar o repositório de backports ao seu arquivo sources.list onde o apt procura as origens dos pacotes. Backports são pacotes dos testes e distribuições instáveis do Debian que são recompilados para que funcionem sem novas bibliotecas em distribuições estáveis do Debian.

Para adicionar o repositório de backports, abra (ou crie) o arquivo sources.list no seu diretório /etc/apt/:

  1. sudo nano /etc/apt/sources.list

Na parte inferior do arquivo, adicione a seguinte linha:

/etc/apt/sources.list.d/sources.list
. . .
deb http://mirrors.digitalocean.com/debian buster-backports main
deb-src http://mirrors.digitalocean.com/debian buster-backports main
deb http://ftp.debian.org/debian buster-backports main

Isso inclui os pacotes main, que estão em conformidade com Debian Free Software Guidelines (DFSG), bem como os componentes não-livres e contrib, que não estão eles próprios em conformidade com DFSG, ou incluem dependências nessa categoria.

Salve e feche o arquivo pressionando CTRL+X, Y, depois ENTER e atualize suas listas de pacotes:

  1. sudo apt update

Em seguida, instale o Certbot com o seguinte comando. Observe que a opção -t diz ao apt para procurar o pacote verificando no repositório de backports que você acabou de adicionar:

  1. sudo apt install python-certbot-apache -t buster-backports

Agora o Certbot está pronto para uso, mas para configurar o SSL para o Apache, precisamos verificar se o Apache foi configurado corretamente.

Passo 2 — Configurando o Certificado SSL

O Certbot precisa encontrar o virtual host correto na sua configuração do Apache para configurar automaticamente o SSL. Especificamente, ele faz isso procurando uma diretiva ServerName que corresponda ao domínio para o qual você solicita um certificado.

Se você seguiu a etapa de configuração do virtual host no tutorial de instalação do Apache, você deve ter um bloco VirtualHost para seu domínio em /etc/apache2/sites-available/seu_domínio.conf com a diretiva ServerName já configurada apropriadamente.

Para verificar, abra o arquivo do virtual host do seu domínio usando nano ou seu editor de texto favorito:

  1. sudo nano /etc/apache2/sites-available/seu_domínio.conf

Encontre a linha ServerName existente. Ele deve ficar assim, com seu próprio nome de domínio em vez de your_domain:

/etc/apache2/sites-available/seu_domínio.conf
...
ServerName seu_domínio;
...

Se ainda não o fez, atualize a diretiva ServerName para apontar para o seu nome de domínio. Em seguida, salve o arquivo, feche seu editor e verifique a sintaxe das suas edições de configuração:

  1. sudo apache2ctl configtest

Se não houver nenhum erro de sintaxe, você verá isso em sua saída:

Output
Syntax OK

Se você receber um erro, reabra o arquivo de virtual host e verifique se há erros de digitação ou caracteres ausentes. Quando a sintaxe do seu arquivo de configuração estiver correta, recarregue o Apache para carregar a nova configuração:

  1. sudo systemctl reload apache2

O Certbot agora pode encontrar o bloco VirtualHost correto e atualizá-lo.

Em seguida, vamos atualizar o firewall para permitir o tráfego HTTPS.

Passo 3 — Permitindo HTTPS Através do Firewall

Se você tiver o firewall ufw ativado, conforme recomendado pelos guias de pré-requisito, precisará ajustar as configurações para permitir o tráfego HTTPS. Felizmente, quando instalado no Debian, o ufw vem com alguns perfis que ajudam a simplificar o processo de alteração das regras de firewall para o tráfego HTTP e HTTPS.

Você pode ver a configuração atual digitando:

  1. sudo ufw status

Se você seguiu o Passo 2 do nosso guia How to Install Apache on Debian 10, a saída deste comando será parecida com esta, mostrando que apenas o tráfego HTTP é permitido para o servidor web:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere WWW ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) WWW (v6) ALLOW Anywhere (v6)

Para permitir adicionalmente o tráfego HTTPS, permita o perfil “WWW Full” e exclua a permissão redundante de perfil “WWW”:

  1. sudo ufw allow 'WWW Full'
  2. sudo ufw delete allow 'WWW'

Seu status agora deve ficar assim:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere WWW Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) WWW Full (v6) ALLOW Anywhere (v6)

Em seguida, vamos executar o Certbot e buscar nossos certificados.

Passo 4 — Obtendo um Certificado SSL

O Certbot fornece várias maneiras de obter certificados SSL através de plugins. O plugin do Apache cuidará da reconfiguração do Apache e da recarga da configuração sempre que necessário. Para usar este plugin, digite o seguinte:

  1. sudo certbot --apache -d seu_domínio -d www.seu_domínio

Isso executa o certbot com o plug-in --apache, usando -d para especificar os nomes para os quais você deseja que o certificado seja válido.

Se esta é sua primeira vez executando o certbot, você será solicitado a inserir um endereço de e-mail e concordar com os termos do serviço. Além disso, ele perguntará se você deseja compartilhar seu endereço de e-mail com a Electronic Frontier Foundation, uma organização sem fins lucrativos que defende os direitos digitais e também é a criadora do Certbot. Sinta-se à vontade para digitar Y para compartilhar seu endereço de e-mail ou N para recusar.

Depois disso, o certbot irá se comunicar com o servidor Let’s Encrypt, e então executará um desafio para verificar se você controla o domínio para o qual está solicitando um certificado.

Se for bem-sucedido, o certbot perguntará como você deseja definir suas configurações de HTTPS:

Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Selecione sua escolha e pressione ENTER. A configuração será atualizada automaticamente e o Apache será recarregado para pegar as novas configurações. O certbot será encerrado com uma mensagem informando que o processo foi bem-sucedido e onde seus certificados estão armazenados:

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/seu_domínio/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/seu_domínio/privkey.pem Your cert will expire on 2019-10-20. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Seus certificados foram baixados, instalados e carregados. Tente recarregar seu site usando https:// e observe o indicador de segurança do seu navegador. Deve indicar que o site está protegido corretamente, geralmente com um ícone de cadeado verde. Se você testar seu servidor usando o SSL Labs Server Test, ele receberá uma nota A.

Vamos terminar testando o processo de renovação.

Passo 5 — Verificando a Autorrenovação do Certbot

Os certificados Let’s Encrypt são válidos apenas por noventa dias. Isso é para incentivar os usuários a automatizar seu processo de renovação de certificado. O pacote certbot que instalamos cuida disso adicionando um script de renovação ao /etc/cron.d. Esse script é executado duas vezes por dia e renova automaticamente qualquer certificado que esteja dentro de trinta dias para a expiração.

Para testar o processo de renovação, você pode fazer uma execução de teste com certbot:

  1. sudo certbot renew --dry-run

Se você não encontrar erros, está tudo pronto. Quando necessário, o Certbot renovará seus certificados e recarregará o Apache para tornar efetivas as alterações. Se o processo de renovação automatizada falhar, o Let’s Encrypt enviará uma mensagem para o email que você especificou, avisando quando o seu certificado estiver prestes a expirar.

Conclusão

Neste tutorial, você instalou o cliente certbot do Let’s Encrypt, baixou certificados SSL para o seu domínio, configurou o Apache para usar esses certificados e configurou a renovação automática de certificados. Se você tiver mais dúvidas sobre o uso do Certbot, a documentação dele é um bom ponto de partida.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Developer Advocate

Dev/Ops passionate about open source, PHP, and Linux.


Default avatar

Manager, Developer Education

Technical Writer @ DigitalOcean




Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.