O Let’s Encrypt é uma forma fácil, automatizada e gratuita de se inserir SSL em uma aplicação web. A utilização do SSL é bem importante quando se há autenticação, tráfego de dados privados ou até mesmo para ser melhor colocado no ranking do Google.
Neste artigo vou demonstrar como gerar e adicionar o SSL no NGINX com a ferramenta Let’s Encrypt. Irei utilizar o sistema operacional Debian para executar os comandos, mas estes podem ser facilmente modificados para serem executados em qualquer distro.
Instalando o Let’s Encrypt:
Clone o projeto no github e redirecione para o caminho /opt/letsencrypt:
É necessário ter o git instalado, caso não tenha:
Preparando o NGINX para ser validado:
O Let’s Encrypt valida se o domínio realmente é seu, então para isso é necessário adicionar uma regra no seu site do NGINX. Adicione o location ^/.well-known no seu site (/etc/nginx/sites-enabled/yoursite), como por exemplo:
Este location será requisitado pelo Let’s Encrypt para confirmar sua identidade. Lembrando que você deve substituir o root e o server_name.
Após adicionar o well-known, reinicie o seu NGINX:
É bom lembrar que o seu domínio deve estar apontando para sua aplicação para obter sucesso com o SSL.
Gerando o SSL com o Let’s Encrypt:
Substitua no comando abaixo, o caminho /var/www/yoursite pelo diretório raiz do seu site no NGINX, e também o yourdomain.com.br e www.yourdomain.com.br pelo seu domínio:
Neste processo irá ser solicitado seu e-mail, para caso necessite da recuperação de seu certificado.
Adicionando o certificado em sua aplicação:
Após o certificado ser gerado com sucesso, altere novamente o seu arquivo de regras do seu site (/etc/nginx/sites-enabled/yoursite), adicionando mais um server, desta vez o de ssl:
Lembrando que você deve alterar o location / com as configurações específicas da sua aplicação web.
Reinicie novamente o seu NGINX:
Entre em seu domínio utilizando o https e veja se o processo ocorreu com sucesso.
Conferindo a qualidade do seu SSL:
Altere example.com pelo seu domínio:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
Melhorando a qualidade do seu certificado:
É importante validar as cifras utilizadas, limitar a versão do protocolo SSL, entre outras coisas. Para isso, recomendo a leitura do seguinte tópico na wiki da Mozilla, Server Side TLS. Existe também o Mozilla SSL Configuration Generator, um gerador de configuração SSL para diversos servidores de aplicação.
Renovando seu certificado com crontab:
O certificado gerado é válido por 3 meses, para facilitar a renovação, você pode criar um cronjob para fazer este trabalho:
Adicione no final do arquivo:
Concluindo:
Neste artigo foi demonstrando a geração do SSL para o NGINX, mas este mesmos passos podem ser facilmente executados em qualquer servidor de aplicação, com algumas modificações. Lembrando que existem outros comandos específicos da ferramenta Let’s Encrypt, como letsencrypt-apache que faz todo o trabalho pra você no caso do Apache, mas tentei demonstrar a forma genérica, que pode servir para outros servidores.
Referências e Links:
- https://letsencrypt.org
- https://github.com/certbot/certbot
- https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
- https://www.nginx.com/blog/free-certificates-lets-encrypt-and-nginx
O certificado SSL também pode ser contratado na 1&1 ou Certisign.