A Let’s Encrypt é uma autoridade certificadora (CA) que proporciona uma maneira descomplicada de obter e instalar certificados TLS/SSL, gratuitamente, possibilitando assim protocolos HTTPS criptografados em servidores web. Ela simplifica o processo ao fornecer um cliente de software, o Certbot, que tenta automatizar a maioria (se não todas) das etapas necessárias. Atualmente, todo o processo de obtenção e instalação de um certificado é totalmente automatizado em Apache e Nginx.
Neste tutorial, você usará o Certbot para obter um certificado SSL gratuito para o Nginx no Ubuntu 20.04 e para configurar o seu certificado para renovação automática.
Este tutorial usará um arquivo de configuração de servidor separado do Nginx em vez do arquivo padrão. Recomendamos que você crie novos arquivos de bloco do servidor do Nginx para cada domínio, uma vez que isso ajuda a evitar erros comuns e mantém as linhas padrão como uma configuração de fallback.
Para seguir este tutorial, você vai precisar do seguinte:
Um servidor Ubuntu 20.04 configurado seguindo este tutorial de configuração inicial de servidor para o Ubuntu 20.04, incluindo um usuário não-root com sudo habilitado e um firewall.
Um nome de domínio registrado. Este tutorial usará o example.com
do início ao fim. Você pode comprar um nome de domínio do Namecheap, obter um gratuitamente com o Freenom ou usar o registrador de domínios de sua escolha.
Ambos os registros de DNS a seguir serão configurados para o seu servidor. Se você estiver usando a DigitalOcean, consulte nossa documentação de DNS para maiores detalhes sobre como adicioná-los.
example.com
apontando para o endereço de IP público do seu servidor.www.example.com
apontando para o endereço de IP público do seu servidor.O Nginx instalado seguindo Como instalar o Nginx no Ubuntu 20.04. Certifique-se de que você tenha um bloco de servidor para o seu domínio. Este tutorial usará o /etc/nginx/sites-available/example.com
como exemplo.
A primeira etapa para usar o Let’s Encrypt para obter um certificado SSL, é instalar o software Certbot no seu servidor.
Instale o Certbot e seu plug-in do Nginx com o apt
:
- sudo apt install certbot python3-certbot-nginx
O Certbot agora está pronto para ser usado. Para que ele configure automaticamente o SSL para o Nginx, porém, precisamos verificar algumas configurações do Nginx.
O Certbot precisa conseguir encontrar o bloco de server
(servidor) correto na sua configuração Nginx para que ele seja capaz de configurar automaticamente o SSL. Mais especificamente, ele faz isso procurando uma diretiva server_name
que corresponda ao domínio do qual você solicita um certificado.
Se você seguiu o passo de configuração de bloco de servidor no tutorial de instalação do Nginx, você deve ter um bloco de servidor para seu domínio em /etc/nginx/sites-available/example.com
com a diretriz server_name
já devidamente configurada.
Para verificar, abra o arquivo de configuração do seu domínio usando o nano
ou seu editor de texto preferido:
- sudo nano /etc/nginx/sites-available/example.com
Encontre a linha existente server_name
. Deve se parecer com isto:
...
server_name example.com www.example.com;
...
Se parecer, saia do seu editor e siga para o próxima etapa.
Se não, atualize-a para corresponder. Em seguida, salve o arquivo, feche o editor e verifique a sintaxe de suas edições de configuração:
- sudo nginx -t
Se receber um erro, abra novamente o arquivo de bloco de servidor e verifique se há erros de digitação ou se faltam caracteres. Assim que a sintaxe do seu arquivo de configuração estiver correta, recarregue o Nginx para carregar a nova configuração:
- sudo systemctl reload nginx
O Certbot agora consegue encontrar o bloco de server
correto e atualizá-lo automaticamente.
Em seguida, atualizaremos o firewall para permitir o tráfego HTTPS.
Se você tem o firewall ufw
ativado, conforme recomendado pelos guias de pré-requisitos, será necessário ajustar as configurações para permitir o tráfego HTTPS. Felizmente, o Nginx registra alguns perfis com o ufw
durante a instalação.
Você pode verificar a configuração atual digitando:
- sudo ufw status
Provavelmente irá se parecer com isso, o que significa que apenas o tráfego HTTP é permitido no servidor Web:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Para também permitir o tráfego HTTPS, autorize o perfil Nginx Full e apague a autorização do perfil Nginx HTTP redundante:
- sudo ufw allow 'Nginx Full'
- sudo ufw delete allow 'Nginx HTTP'
Seu status agora deve se parecer com este:
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Em seguida, vamos executar o Certbot e buscar os nossos certificados.
O Certbot oferecer várias maneiras de obter certificados SSL através de plug-ins. O plug-in Nginx cuidará da reconfiguração do Nginx e recarregará a configuração sempre que necessário. Para usar este plug-in, digite o seguinte:
- sudo certbot --nginx -d example.com -d www.example.com
Esse comando executa o certbot
com o plug-in --nginx
, usando -d
para especificar os nomes para os quais desejamos um certificado válido.
Se essa é a primeira vez que você executa o certbot
, você será solicitado a informar um endereço de e-mail e concordar com os termos de serviço. Após fazer isso, o certbot
se comunicará com o servidor da Let’s Encrypt, executando posteriormente um desafio para verificar se você controla o domínio para o qual está solicitando um certificado.
Se tudo correr bem, o certbot
perguntará como você quer definir suas configurações de HTTPS.
OutputPlease 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):
Select your choice then hit ENTER
. A configuração será atualizada e o Nginx recarregará para aplicar as novas configurações. O certbot
será encerrado com uma mensagem informando que o processo foi concluído e onde os certificados estão armazenados:
OutputIMPORTANT 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-08-18. 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
Seus certificados são baixados, instalados e carregados. Tente recarregar o site usando https://
e verifique o indicador de segurança do seu navegador. Ele deve indicar que o site está devidamente protegido, normalmente com um ícone de cadeado. Se você testar o servidor usando o SSL Labs Server Test, receberá uma classificação A.
Vamos concluir testando o processo de renovação.
Os certificados da Let’s Encrypt possuem validade de apenas 90 dias. Isso visa incentivar os usuários a automatizar o processo de renovação de certificados. O pacote certbot
que instalamos cuida disso adicionando um temporizador systemd que será executado duas vezes por dia e renovará automaticamente qualquer certificado que esteja dentro de trinta dias da expiração.
Você pode consultar o status do temporizador com o systemctl
:
- sudo systemctl status certbot.timer
Output● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service
Para testar o processo de renovação, você pode realizar uma simulação com o certbot
:
- sudo certbot renew --dry-run
Se não aparecerem erros, tudo funcionou. Quando necessário, o Certbot renovará seus certificados e recarregará o Nginx para aplicar as alterações. Se o processo de renovação automatizada alguma vez falhar, a Let’s Encrypt enviará uma mensagem para o e-mail que você especificou, informando quando o certificado vai expirar.
Neste tutorial, você instalou o certbot
do cliente Let’s Encrypt, baixou os certificados SSL para o seu domínio, configurou o Nginx para usar esses certificados e configurou a renovação automática de certificados. Em caso de outras dúvidas sobre como usar o Certbot, a documentação oficial é um bom ponto de partida.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Valeu! Tudo funcionou perfeitamente bem!
Ajudou muito, muito obrigado.