Como configurar o Nginx com Let’s Encrypt Cert?

Um guia passo a passo para implementar o certificado Let’s Encrypt TLS no Nginx.

Proteger o site com um certificado TLS é essencial. Há duas razões principais:

  • Transmissão segura de dados entre o dispositivo de um usuário para o dispositivo de descarregamento SSL/TLS
  • Melhorar a classificação de pesquisa do Google

Ultimamente, o Google anunciado esse site sem https:// seria marcado como “Não seguro” no navegador Chrome.

Então sim, diga SIM ao HTTPS.

Se você estiver executando um blog, site pessoal, não associado, o site transacional não financeiro, então você pode ir para o certificado Let’s Encrypt.

Let’s Encrypt oferece um certificado GRATUITO.

No entanto, se você está aceitando uma transação financeira, então você pode querer ir para um certificado comercial .

Vamos implementar o TLS no Nginx…

Presumo que você já tenha o Nginx instalado e em execução, caso contrário, consulte isso Guia de instalação .

Existem várias maneiras de fazer isso.

Vamos criptografar usando Certbot

Uma das maneiras mais fáceis e recomendadas de instalá-lo.

Certbot oferece um menu suspenso onde você pode selecionar o servidor da Web e o sistema operacional para obter as instruções.

Eu selecionei Nginx e Ubuntu como você pode ver abaixo.

E estarei executando o seguinte no servidor Nginx para instalar o plug-in certbot.

# apt-get install software-properties-common
# add-apt-repository ppa:certbot/certbot
# apt-get update
# apt-get install python-certbot-nginx

Depois de tudo ok, é hora de usar um plugin certbot para instalar um certificado no Nginx.

Você pode usar o comando abaixo que se encarregará de modificar o arquivo necessário para configurar o certificado.

# certbot --nginx

Ele verificará o CN (nome comum) no arquivo de configuração Nginx existente e, se não for encontrado, solicitará que você entre.

Ex:

root@instance-1:/etc/nginx/sites-available# certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated)  (Enter 'c' to cancel): bloggerflare.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for bloggerflare.com
Waiting for verification...
Cleaning up challenges
Deployed Certificate to VirtualHost /etc/nginx/sites-enabled/default for bloggerflare.com
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): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/default
-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://bloggerflare.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=bloggerflare.com
-------------------------------------------------------------------------------
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/bloggerflare.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/bloggerflare.com/privkey.pem
   Your cert will expire on 2018-05-27. 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"
 - 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
root@instance-1:/etc/nginx/sites-available#

A automação do Certbot é inteligente !

Como você pode ver, ele cuidou de toda a configuração necessária para deixar meu Nginx pronto para servir em https.

No entanto, se você não deseja que o Certbot modifique a configuração para você, basta solicitar o comando abaixo.

# certbot --nginx certonly

O comando acima não fará nenhuma modificação, apenas fornecerá o certificado para que você possa configurar da maneira que desejar.

Mas e se você não puder ou não quiser usar o Certbot?

Procedimento manual

Existem várias maneiras de obter o certificado emitido pela Let’s Encrypt, mas uma das recomendadas é de SSL de graça ferramenta on-line.

Forneça seu URL e prossiga com o método de verificação. Depois de verificado, você receberá o certificado, a chave privada e a CA.

permite-criptografar-cert

Baixe-os e transfira para o servidor Nginx. Vamos mantê-los na pasta ssl (criar se não existir) do caminho de instalação do Nginx

  root@instance-2:/etc/nginx/ssl# ls -ltr
 -rw-r--r-- 1 root root 1704 Feb 26 10:04 private.key
 -rw-r--r-- 1 root root 1647 Feb 26 10:04 ca_bundle.crt
 -rw-r--r-- 1 root root 3478 Feb 26 10:57 certificate.crt
 root@instance-2:/etc/nginx/ssl# 

Antes de prosseguir com a modificação da configuração, você precisa concatenar certificate.crt e ca_bundle.crt em um único arquivo. Vamos nomeá-lo tlscert.crt

cat certificate.crt ca_bundle.crt >> tlscert.crt
  • Vá para sites-available pasta e adicione o seguinte no respectivo arquivo de configuração do site
  server {
 listen 443;
 ssl on;
 ssl_certificate /etc/nginx/ssl/tlscert.crt;
 ssl_certificate_key /etc/nginx/ssl/private.key;
 }
  • Reinicie o Nginx
service nginx restart

Tente acessar o respectivo domínio por HTTPS

nginx-lets-encrypted

Então aqui está, é um sucesso!

Uma alternativa ao Let’s Encrypt, você também pode usar ZeroSSL que é explicado aqui sobre a implementação.

Em seguida, você pode querer testar seu site para Vulnerabilidade SSL/TLS e corrija-os se forem encontrados.

Artigos relacionados