Cómo asegurar sistemas web con SSL/TLS
Índice:
- Pré-requisitos
- Instalando o Certbot
- Gerando um grupo forte de Dh (Diffie-Hellman)
- Obtendo um certificado SSL Let's Encrypt
- Renovação automática Vamos criptografar o certificado SSL
- Conclusão
Let's Encrypt é uma autoridade de certificação gratuita, automatizada e aberta, desenvolvida pelo Internet Security Research Group (ISRG) que fornece certificados SSL gratuitos.
Os certificados emitidos pelo Let's Encrypt são confiáveis por todos os principais navegadores e válidos por 90 dias a partir da data de emissão.
Neste tutorial, forneceremos instruções passo a passo sobre como instalar um certificado SSL Let's Encrypt criptografado gratuitamente no CentOS 8 executando o Nginx como um servidor da web. Também mostraremos como configurar o Nginx para usar o certificado SSL e ativar o HTTP / 2.
Pré-requisitos
Antes de prosseguir, verifique se você atendeu aos seguintes pré-requisitos:
- Você tem um nome de domínio apontando para seu IP público. Usaremos
example.com. Você tem o Nginx instalado no servidor CentOS. Seu firewall está configurado para aceitar conexões nas portas 80 e 443.
Instalando o Certbot
Certbot é uma ferramenta de linha de comando gratuita que simplifica o processo de obtenção e renovação de certificados criptografados Let's Encrypt, SSL e habilitação automática de HTTPS em seu servidor.
O pacote certbot não está incluído nos repositórios padrão do CentOS 8, mas pode ser baixado do site do fornecedor.
Execute o seguinte comando
wget
como usuário root ou sudo para baixar o script certbot para o
/usr/local/bin
:
sudo wget -P /usr/local/bin
Quando o download estiver concluído, torne o arquivo executável:
sudo chmod +x /usr/local/bin/certbot-auto
Gerando um grupo forte de Dh (Diffie-Hellman)
A troca de chaves Diffie – Hellman (DH) é um método de troca segura de chaves criptográficas por um canal de comunicação não seguro.
Gere um novo conjunto de parâmetros DH de 2048 bits digitando o seguinte comando:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Obtendo um certificado SSL Let's Encrypt
Para obter um certificado SSL para o domínio, usaremos o plug-in Webroot que funciona criando um arquivo temporário para validar o domínio solicitado no diretório
${webroot-path}/.well-known/acme-challenge
. O servidor Let's Encrypt faz solicitações HTTP para o arquivo temporário para validar que o domínio solicitado seja resolvido no servidor em que o certbot é executado.
Para simplificar,
/var/lib/letsencrypt
todas as solicitações HTTP para
.well-known/acme-challenge
em um único diretório,
/var/lib/letsencrypt
.
Os comandos a seguir criarão o diretório e o gravarão no servidor Nginx.
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp nginx /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
Para evitar a duplicação de código, crie os dois trechos a seguir que serão incluídos em todos os arquivos de bloco do servidor Nginx:
sudo mkdir /etc/nginx/snippets
/etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
/etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=63072000" always; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;
O snippet acima inclui os trituradores recomendados pela Mozilla, habilita o grampeamento OCSP, HSTS (HTTP Strict Transport Security) e aplica poucos cabeçalhos HTTP com foco em segurança.
Após a criação dos trechos, abra o bloco do servidor de domínio e inclua o trecho
letsencrypt.conf
, conforme mostrado abaixo:
server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }
Recarregue a configuração do Nginx para que as alterações entrem em vigor:
sudo systemctl reload nginx
Execute a ferramenta certbot com o plug-in webroot para obter os arquivos de certificado SSL para o seu domínio:
sudo /usr/local/bin/certbot-auto certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Se for a primeira vez que você chama o
certbot
, a ferramenta instalará as dependências ausentes.
Depois que o certificado SSL for obtido com sucesso, o certbot imprimirá a seguinte mensagem:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2020-03-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:
Agora que você possui os arquivos de certificado, pode editar o bloco do servidor de domínio da seguinte maneira:
/etc/nginx/conf.d/example.com.conf
server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } server { listen 443 ssl http2; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }
Com a configuração acima, estamos forçando o HTTPS e redirecionando a www para a versão não www.
Por fim, recarregue o serviço Nginx para que as alterações entrem em vigor:
sudo systemctl reload nginx
Agora, abra seu site usando
https://
e você verá um ícone de cadeado verde.

Renovação automática Vamos criptografar o certificado SSL
Os certificados do Let's Encrypt são válidos por 90 dias. Para renovar automaticamente os certificados antes que eles expirem, crie um cronjob que será executado duas vezes por dia e renove automaticamente qualquer certificado 30 dias antes da expiração.
Use o comando
crontab
para criar um novo cronjob:
sudo crontab -e
Cole a seguinte linha:
0 */12 * * * root test -x /usr/local/bin/certbot-auto -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && /usr/local/bin/certbot-auto -q renew --renew-hook "systemctl reload nginx"
Salve e feche o arquivo.
Para testar o processo de renovação, você pode usar o comando certbot seguido pela opção
--dry-run
:
sudo certbot renew --dry-run
Se não houver erros, significa que o processo de renovação do teste foi bem-sucedido.
Conclusão
Neste tutorial, mostramos como usar o cliente Let's Encrypt, certbot para baixar certificados SSL para o seu domínio. Também criamos trechos do Nginx para evitar duplicação de código e configuramos o Nginx para usar os certificados. No final do tutorial, configuramos um cronjob para renovação automática de certificado.
Para saber mais sobre o Certbot, visite a página de documentação deles.
centos nginx vamos criptografar certbot sslNginx seguro com vamos criptografar no centos 7
Neste tutorial, forneceremos instruções passo a passo sobre como proteger seu Nginx com o Let's Encrypt usando a ferramenta certbot no CentOS 7
Nginx seguro com vamos criptografar no ubuntu 18.04
Let's Encrypt é uma autoridade de certificação aberta e gratuita desenvolvida pelo Internet Security Research Group. Neste tutorial, forneceremos instruções passo a passo sobre como proteger seu Nginx com o Let's Encrypt usando a ferramenta certbot no Ubuntu 18.04
Apache seguro com vamos criptografar no centos 7
Neste tutorial, abordaremos as etapas necessárias para instalar um certificado SSL Let's Encrypt criptografado gratuitamente em um servidor CentOS 7 executando o Apache como um servidor web.







