O Let’s Encrypt é uma Autoridade de Certificação (CA) que fornece uma maneira fácil de obter e instalar certificados TLS/SSL gratuitos, habilitando tráfego HTTPS (criptografado) em servidores web. Ele simplifica o processo fornecendo um software cliente, o Certbot, que tenta automatizar a maioria (se não todas) as etapas necessárias. Atualmente, todo o processo de obtenção e instalação de um certificado é totalmente automatizado no Apache e no Nginx.
Neste tutorial, usaremos o Certbot para obter um certificado SSL gratuito para o Nginx no Ubuntu 18.04 (aplicável a outras versões, mas sempre recomendável uma versão LTS) e configurar seu certificado para ser renovado automaticamente.
Pré-requisitos
- Uma máquina Ubuntu com servidor web Nginx pré-instalado.
- Um domínio registrado para uso. Nesse tutorial usarei como exemplo o domínio example.com , que deve ser substituído pelo domínio de sua escolha.
- Os seguintes registros de DNS devidamente configurados para seu servidor:
- Um registro do tipo A com example.com apontando para o IP público do seu servidor.
- Um registro do tipo A com www.example.com apontando para o IP público do seu servidor.
- Um arquivo de configuração de servidor do Nginx separado. Neste exemplo, ele fica localizado em /etc/nginx/sites-available/example.com .
1 — Instalando o Certbot
O primeiro passo para usar o Let’s Encrypt para obter um certificado SSL é instalar o software Certbot no seu servidor. O Certbot está em constante desenvolvimento/manutenção, então os pacotes Certbot fornecidos pelo Ubuntu tendem a estar desatualizados. No entanto, os desenvolvedores do Certbot mantêm um repositório de software do Ubuntu com versões atualizadas, portanto, usaremos esse repositório.
Primeiro, adicione o repositório:
1 |
sudo add-apt-repository ppa:certbot/certbot |
Pressione ENTER para confirmar e então atualize a lista dos repositórios:
1 |
sudo apt-get update |
Finalmente, instale o Certbot:
1 |
sudo apt-get install python-certbot-nginx |
O Cerbot está pronto para uso, mas para configurar o SSL para o Nginx, primeiro precisamos verificar algumas configurações do servidor web.
2 — Configuração do Nginx
1 |
. . . server_name example.com www.example.com; . . . |
Para verificar a sintaxe do seu arquivo de configuração do Nginx, você pode executar:
1 |
sudo nginx -t |
Estando tudo em conformidade, você pode reiniciar o Nginx para efetivar as alterações:
1 |
sudo service nginx restart |
Agora o Certbot pode encontrar o arquivo de servidor correto e atualizá-lo.
3 — Obtendo um certificado SSL
O Certbot fornece uma variedade de maneiras de obter certificados SSL, através de vários plugins. O plugin Nginx irá cuidar de reconfigurar o o servidor e atualizar a configuração sempre que necessário:
1 |
sudo certbot --nginx -d example.com -d www.example.com |
Se esta for a primeira execução do certbot, você será solicitado a digitar um endereço de e-mail e concordar com os termos de serviço. Depois disso, o certbot se comunicará com o servidor Let’s Encrypt e executará uma requisição para verificar se você possui o domínio para o qual está solicitando um certificado. Se a execução for bem sucedida, o certbot perguntará como você gostaria de definir suas configurações de HTTPS:
1 2 3 4 5 6 |
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): |
Com a primeira opção, o tráfego permanece como está atualmente (sem redirecionamento), enquanto com a segunda opção, todo tráfego HTTP será redirecionado para o protocolo HTTPS. Selecione a opção de sua preferência e pressione ENTER .
Seus certificados são baixados, instalados e carregados. Tente recarregar seu site usando https: // e observe o indicador de segurança do seu navegador. Ele deve indicar que o site está protegido corretamente, geralmente com um ícone de cadeado verde. Se você testar seu servidor usando o Teste de Servidor do SSL Labs, ele receberá uma nota A. Vamos terminar testando o processo de renovação.
4 — Verificando auto-renovação do Certbot
Os certificados do Let’s Encrypt só são válidos por noventa dias. O pacote do certbot que instalamos cuida disso automaticamente, adicionando um script de renovação assíncrono ao /etc/cron.d . Esse script é executado duas vezes por dia e renova automaticamente qualquer certificado que esteja no prazo de trinta dias para expirar. Para testar o processo de renovação, você pode fazer uma execução isolada:
1 |
sudo certbot renew --dry-run |
Se não houver nenhum erro, está tudo pronto. Quando necessário, o Certbot renovará seus certificados e recarregará o Nginx para atualizar as alterações. Se o processo de renovação automática falhar, o Let’s Encrypt enviará uma mensagem para o e-mail que você cadastrou, avisando quando seu certificado estiver prestes a expirar.
Se liga aí, que é hora da revisão
Neste tutorial, você instalou o certificado o Certbot, software cliente do Let’s encrypt; baixou os certificados SSL do seu domínio, configurou o Nginx para usar esses certificados e configurou a renovação automática do certificado. Se você tiver dúvidas sobre o uso do Certbot, a documentação oficial é um bom lugar para começar. Quaisquer dúvidas ou sugestões, utilize a área de comentários ou entre em contato!
2 Comentários
Sannytet
12 de dezembro de 2018 at 01:15Nice posts! 🙂
___
Sanny
Gleiner
7 de Maio de 2019 at 17:27Top D+