fbpx

Como instalar o certbot (Let’s Encrypt) no Amazon Linux 2 com Nginx

folder_openLinux, Segurança da Informação
access_time

4 min

Nesse tutorial vamos passar instruções de como configurar o Nginx com certificados SSL emitidos pelo Let’s Encrypt, uma solução para emissão de certificados SSL gratuitos.

O Amazon Linux é uma distribuição de Linux baseada no RedHat Enterprise Linux, é a versão que vem como padrão quando se inicia uma instância de LightSail e é a recomendada padrão ao criar uma instância EC2.

Embora disponíveis também versões do CentOS, RedHat, Ubuntu, o Amazon Linux oferece a vantagem de vir com os pacotes de administração da AWS, conta com Kernel LTS (Long Term Support), e a Amazon garante atualização dos pacotes por um tempo estendido.

O Nginx é um servidor Web conhecido por sua alta performance, facilidade de configuração e flexibilidade, podendo atender milhares de conexões simultâneas com baixo uso de memória e CPU.

Vamos aos passos:

1. Instalar o Nginx

A Amazon disponibiliza seu próprio comando para instalar o Nginx, basta utilizar:

sudo amazon-linux-extras install nginx1.12

Iniciar o serviço e colocar no boot:

sudo systemctl start nginx
sudo systemctl enable nginx

Isso vai iniciar o serviço, o diretório padrão para arquivos HTML é o /usr/share/nginx/html, o arquivo de configuração aceitará todos os domínios, você pode configurar os domínios individualmente.

2. Instalar o Certbot e suas dependências

Certbot é o utilitário utilizado para gerar os certificados do Let’s Encrypt.

As instruções para instalar o Certbot em um Linux genérico estão disponíveis na página oficial, vamos usar os mesmos comandos com alguns ajustes para o Amazon Linux 2.

wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto

Agora se seguirmos o processo e tentarmos rodar:

sudo /usr/local/bin/certbot-auto --nginx

Obtemos o erro:

Sorry, I don't know how to bootstrap Certbot on your operating system!

Como escrevemos no início do artigo, o Amazon Linux 2 é baseado no RedHat Linux, então basta simular um RedHat Linux para funcionar*:

sudo touch /etc/redhat-release

* importante apagar esse arquivo no final, pois ele pode influenciar o funcionamento de outros softwares, veja no final desse artigo em “Limpando nossa sujeira”

E depois tentar novamente o comando:

sudo /usr/local/bin/certbot-auto --nginx

Esse comando irá instalar todas as dependências e bibliotecas necessárias para gerar o certificado SSL, as perguntas que ele fará:

Primeiro ele trará uma lista de pacotes que precisam ser instalados, confirme com “y”

Install 8 Packages (+29 Dependent packages)
Total download size: 47 M
Installed size: 126 M
Is this ok [y/d/N]:

Depois ele solicitará um e-mail para o registro, entre com um e-mail válido, pois se houver algum problema com seu certificado, você será notificado antes de ter problemas;

Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

Ele perguntará se aceita os termos e condições, aceite com “A”:

(A)gree/(C)ancel:

Ele perguntará se deseja compartilhar o e-mail com a Electronic Frontier Foundation, é interessante a EFF saber quantas pessoas usam certificados SSL para continuar incentivando doações:

(Y)es/(N)o

Agora já está na hora de gerar o certificado.

3. Gerando o certificado

Na verdade, o comando anterior irá gerar o certificado automaticamente, de duas formas:

  • Se você já configurou alguns domínios no seu Nginx, ele irá detectar automaticamente e sugerir a geração dos certificados
  • Se você está com a configuração padrão do Nginx, ele trará uma mensagem indicando para entrar com os domínios a gerar o certificado:
No names were found in your configuration files. Please enter in your domain name(s) (comma and/or space separated)(Enter 'c' to cancel):

Nesse momento você pode digitar os domínios a serem gerados, se tiver mais de um separe por espaços. Caso ainda não tenha configurado o DNS, use a letra “c” para pular essa etapa e gerar o certificado depois.

Se precisar gerar o certificado depois, pode utilizar o comando*:

sudo /usr/local/bin/certbot-auto --nginx certonly -d DOMINIO.COM.BR

* aqui partimos do princípio que o domínio já está apontando para o IP do servidor e que o Firewall está configurado as portas 80 e 443 abertas

4. Testando seu certificado SSL:

Essa é a parte mais simples, basta abrir em seu navegador a URL colocando o protocolo HTTPS, por exemplo: https://dominio.com.br

5. Configurar a renovação automática do certificado SSL

Por segurança, os certificados expiram a cada 3 meses e precisam ser renovados (gerado um novo). Mas o processo é bem simples, basta colocar no Crontab, de acordo com o comando oficial:

echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew -q" | sudo tee -a /etc/crontab > /dev/null

Eles usam uma chamada do python com um sleep de até 1 hora para que não aconteça de todos os clientes bombardearem ao mesmo tempo os servidores deles para renovar o certificado.

6. Limpando nossa sujeira

No meio do processo geramos um arquivo para simular um ambiente RedHat Linux, vamos apagar esse arquivo para que nenhum outro software confunda a distribuição do Linux e acabe gerando resultados inesperados:

sudo rm /etc/redhat-release -fv

7. Extra: testando sua configuração de segurança do SSL

Recomendado pela equipe do Let’s Encrypt, existe uma ferramenta que testa a configuração do SSL, se está configurado com as melhores práticas e melhores protocolos.

O SSL é um protocolo que já tem uma certa idade, foi inventado pela Netscape em 1995 (25 anos quando escrevo esse artigo).

Ele iniciou com um protocolo na época, que era o SSLv1, usando algorítimos de criptografia da época (DES e MD5).

Posteriormente foram sendo encontradas vulnerabilidades no protocolo e nos algorítimos, por isso foram sendo geradas versões novas do protocolo (SSLv2, SSLv3, TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3) e substituídos os algorítimos (RSA, AES, SHA256 e SHA384 atualmente).

Em 2020, o padrão de segurança é o TLS v1.2, ele é compatível com Android 4.4.2 ou superior, Chrome 49 ou superior, Internet Explorer 11, Edge 15 ou superior, Safari 9 ou superior. Veja que é incompatível com algumas versões antigas, mas isso em troca da segurança.

Você pode testar sua configuração no site abaixo, entre com o domínio para um diagnóstico:

https://www.ssllabs.com/ssltest/

O resultado será uma nota, sendo A a mais alta segurança.

Uma instalação nova do Nginx deve conseguir a nota mais alta facilmente.

Se houverem problemas, o próprio site recomendará alterações.

Related Posts

Menu
Simple Login Protect for WordPress
Enter in wait list!
Simply enter your email address
and our team will contact as soon as possible
SUBMIT NOW
close-link
Sky Monitor
Solicitar uma Demonstração!
Entre com seu e-mail e nossa equipe entrará em contato:
ENVIAR AGORA
close-link

Subscribe to our newsletter

Sign-up to get the latest news straight to your inbox.
SUBSCRIBE!
Give it a try, you can unsubscribe anytime.