Pesquisa de site

Instale o certificado SSL Let's Encrypt para Nginx no RHEL 9/8


Neste artigo, orientaremos você sobre como gerar e instalar um certificado SSL/TLS obtido gratuitamente da Let's Encrypt Certificate Authority que usaremos para proteger transações HTTP do servidor web Nginx no RHEL e Distribuições baseadas em RHEL, como Fedora, Rocky Linux e AlmaLinux.

Se você deseja instalar o Let’s Encrypt para Apache no RHEL e em distribuições baseadas em RHEL, siga este guia abaixo:

Requisitos

  • Um nome de domínio registrado com registros DNS A válidos para apontar para o endereço IP público do servidor.
  • Servidor web Nginx instalado com SSL habilitado e Virtual Hosts habilitados (somente para hospedagem de múltiplos domínios ou subdomínios).

Nossa configuração de ambiente de teste

Etapa 1: Instale o servidor Web Nginx em sistemas RHEL

1. Na primeira etapa, caso você não tenha o daemon Nginx já instalado, emita os comandos abaixo com privilégios de root para instalar o servidor web Nginx dos repositórios Epel.


------------- On RHEL, Rocky & AlmaLinux 9 ------------- 
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

------------- On RHEL, Rocky & AlmaLinux 8 -------------
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

------------- Install Nginx Web Server -------------
yum install nginx

Nota: Os usuários do Fedora não precisam instalar o repositório epel.

Etapa 2: Instale Let's Encrypt (Certbot) em sistemas RHEL

2. O método mais rápido de instalação do cliente Let's Encrypt em sistemas Linux é instalar os pacotes certbot e python3-certbot-nginx do repositório epel .


dnf install certbot python3-certbot-nginx

3. Após a instalação do cliente certbot, verifique a versão instalada do software Let’s Encrypt executando o comando abaixo:


certbot --version

certbot 1.30.0

Etapa 3: Obtenha um certificado SSL Let’s Encrypt gratuito para Nginx

4. O processo de obtenção de um Certificado SSL/TLS gratuito para Nginx será feito manualmente usando Let's Encrypt Standalone > plug-in.

Este método exige que a porta 80 esteja livre durante o tempo em que o cliente Let’s Encrypt valida a identidade do servidor e gera certificados.

Portanto, se o Nginx já estiver em execução, pare o daemon com o seguinte comando e execute o utilitário ss para confirmar que a porta 80 não está mais em uso na pilha de rede.


service nginx stop
systemctl stop nginx
ss -tln

5. Agora é hora de obter um certificado SSL gratuito da Let's Encrypt executando o comando certbot com --nginx para inicializar a busca e configuração do certificado de segurança Let's Encrypt para domínios Nginx.


certbot --nginx
Or
certbot --nginx -d example.com -d www.example.com

6. Finalmente, se tudo correr como deveria, uma mensagem informativa de parabéns será mostrada em seu terminal bash. A mensagem também será exibida quando o certificado expirar.

Etapa 4: Instale o certificado SSL Vamos criptografar no Nginx

9. Agora que você possui um Certificado SSL/TLS gratuito, é hora de instalá-lo no servidor Nginx para que seu domínio possa usá-lo.

Todos os novos certificados SSL são colocados em /etc/letsencrypt/live/ em um diretório nomeado após o seu nome de domínio. Use o comando ls para listar os arquivos de certificado emitidos para o seu domínio e identificá-los.

sudo ls /etc/letsencrypt/live/
sudo ls -al /etc/letsencrypt/live/your_domain.tld

10. Para instalar os arquivos de certificado no Nginx e habilitar SSL, abra o arquivo /etc/nginx/nginx.conf para edição e adicione as instruções abaixo após a última linha de escuta de bloco do servidor. Use a ilustração abaixo como guia.

vi /etc/nginx/nginx.conf

Trecho do bloco Nginx SSL:

SSL configuration
listen 443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/your_domain.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.tld/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

Substitua a string nome de domínio dos certificados SSL para que correspondam ao seu próprio domínio.

11. Por fim, reinicie o serviço Nginx e visite seu domínio via protocolo HTTPS em https://seudominio. A página deve carregar sem problemas, sem nenhum erro de certificado.

systemctl restart nginx
service nginx restart

12. Para verificar o certificado SSL/TLS e sua veracidade visite o seguinte link:

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

13. Caso você receba uma notificação de que seu servidor suporta uma troca de chaves DH fraca e uma classificação geral de grau B, gere um novo 13. Strong>Diffie-Hellman no diretório /etc/nginx/ssl/ para proteger seu servidor contra o ataque Logjam executando os seguintes comandos.

mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
openssl dhparam -out dhparams.pem 4096

Neste exemplo, usamos uma chave de 4096 bits, que na verdade leva muito tempo para ser gerada e coloca uma sobrecarga extra no seu servidor e no handshake SSL.

Caso não haja necessidade explícita de usar uma chave tão longa e você não esteja muito paranóico, você deve estar seguro com uma chave de 2048 bits.

14. Depois que a chave DH for gerada, abra o arquivo de configuração Nginx e adicione as instruções abaixo após a linha ssl_ciphers para adicionar a chave DH e aumente o nível de segurança do seu domínio para uma nota A+.

vi /etc/nginx/nginx.conf

Adicione o seguinte trecho de bloco ao Nginx.conf:

ssl_dhparam /etc/nginx/ssl/dhparams.pem;
ssl_session_timeout 30m;
ssl_session_cache shared:SSL:10m;
ssl_buffer_size 8k;
add_header Strict-Transport-Security max-age=31536000;

15. Reinicie o serviço Nginx para aplicar as alterações e testar novamente seu certificado SSL limpando o cache de resultados anterior do link mencionado acima.

systemctl restart nginx
service nginx restart

Etapa 5: renovação automática Nginx grátis permite criptografar certificados SSL

16. Let’s Encrypt CA lança certificados SSL/TLS gratuitos válidos por 90 dias. Os certificados podem ser renovados manualmente e aplicados antes da expiração usando o plugin webroot, sem parar o seu servidor web, emitindo os comandos abaixo:


certbot --nginx -d example.com -d www.example.com
systemctl reload nginx

Ao executar o comando acima, certifique-se de substituir example.com para corresponder ao seu domínio.

17. Para renovar automaticamente o certificado antes que ele expire, crie o cron job em um arquivo crontab existente.


crontab -e

Adicione o seguinte cron job na parte inferior do arquivo, que será executado todos os dias ao meio-dia para verificar a expiração do certificado e renová-lo. A opção --quiet diz ao certbot para não gerar saída.


0 12 * * * /usr/bin/certbot renew --quiet

Isso é tudo! Agora, o servidor Nginx pode fornecer conteúdo da web seguro com um certificado SSL/TLS Let’s Encrypt gratuito em seu site.