Introdução
O Let’s Encrypt é uma Autoridade de Certificação (CA) que fornece uma maneira fácil de obter e instalar certificados TLS/SSL gratuitos, possibilitando assim o uso de HTTPS criptografado em servidores web. Ele simplifica o processo ao fornecer um cliente de software, Certbot, que tenta automatizar a maioria (se não todos) os passos necessários. Atualmente, todo o processo de obtenção e instalação de um certificado é totalmente automatizado tanto no Apache quanto no Nginx.
Neste tutorial, você usará o Certbot para obter um certificado SSL gratuito para o Nginx no Ubuntu 20.04 e configurará seu certificado para renovar automaticamente.
Este tutorial usará um arquivo de configuração separado do servidor Nginx em vez do arquivo padrão. Recomendamos criar novos arquivos de bloco de servidor Nginx para cada domínio, pois isso ajuda a evitar erros comuns e mantém os arquivos padrão como uma configuração de fallback.
Deixe a DigitalOcean se preocupar com a administração do Nginx e do Let’s Encrypt. O DigitalOcean App Platform permitirá que você faça implantações diretamente do GitHub em minutos. O App Platform também lidará com certificados SSL e roteamento para você.
Pré-requisitos
Para seguir este tutorial, você precisará de:
-
Um servidor Ubuntu 20.04 configurado seguindo este tutorial de configuração inicial do servidor para Ubuntu 20.04, incluindo um usuário não-root habilitado para sudo e um firewall.
-
Um nome de domínio registrado. Este tutorial usará
example.com
como exemplo. Você pode comprar um nome de domínio na Namecheap, obter um gratuitamente com a Freenom, ou usar o registrador de domínio de sua escolha. -
Ambos os seguintes registros DNS configurados para o seu servidor. Se você estiver usando a DigitalOcean, consulte nossa documentação de DNS para detalhes sobre como adicioná-los.
- Um registro A com
example.com
apontando para o endereço IP público do seu servidor. - Um registro A com
www.example.com
apontando para o endereço IP público do seu servidor.
- Um registro A com
-
Nginx instalado seguindo Como Instalar o Nginx no Ubuntu 20.04. Certifique-se de ter um bloco de servidor para seu domínio. Este tutorial usará
/etc/nginx/sites-available/example.com
como exemplo.
Passo 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.
Instale o Certbot e seu plugin Nginx com apt
:
O Certbot está agora pronto para uso, mas para que ele possa configurar automaticamente o SSL para o Nginx, precisamos verificar algumas configurações do Nginx.
Passo 2 — Confirmando a Configuração do Nginx
O Certbot precisa ser capaz de encontrar o bloco server
correto na sua configuração do Nginx para poder configurar automaticamente o SSL. Especificamente, ele faz isso procurando por uma diretiva server_name
que corresponda ao domínio para o qual você solicita um certificado.
Se você seguiu o passo de configuração do bloco de servidor no tutorial de instalação do Nginx, você deve ter um bloco de servidor para o seu domínio em /etc/nginx/sites-available/example.com
com a diretiva server_name
já configurada adequadamente.
Para verificar, abra o arquivo de configuração para o seu domínio usando nano
ou seu editor de texto favorito:
Procure pela linha existente server_name
. Deve se parecer com isso:
Se for o caso, saia do seu editor e siga para o próximo passo.
Se não ocorrer, atualize-o para corresponder. Em seguida, salve o arquivo, saia do seu editor e verifique a sintaxe das suas edições de configuração:
Se você receber um erro, reabra o arquivo de bloco do servidor e verifique se há erros de digitação ou caracteres ausentes. Uma vez que a sintaxe do seu arquivo de configuração esteja correta, recarregue o Nginx para carregar a nova configuração:
O Certbot agora pode encontrar o bloco server
correto e atualizá-lo automaticamente.
Em seguida, vamos atualizar o firewall para permitir o tráfego HTTPS.
Passo 3 — Permitindo HTTPS pelo Firewall
Se você tiver o firewall ufw
ativado, conforme recomendado pelos guias pré-requisitos, precisará 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 ver a configuração atual digitando:
Provavelmente, parecerá com isso, significando que apenas o tráfego HTTP é permitido para o 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 permitir também o tráfego HTTPS, permita o perfil Nginx Full e exclua a permissão redundante do perfil Nginx HTTP:
O status deve ficar assim agora:
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 nossos certificados.
Passo 4 — Obtendo um Certificado SSL
O Certbot oferece uma variedade de maneiras de obter certificados SSL por meio de plugins. O plugin do Nginx cuidará de reconfigurar o Nginx e recarregar a configuração sempre que necessário. Para usar este plugin, digite o seguinte:
Isto executa certbot
com o plugin --nginx
, usando -d
para especificar os nomes de domínio para os quais gostaríamos que o certificado fosse válido.
Se esta for a primeira vez que você executa o certbot
, será solicitado que você insira um endereço de e-mail e concorde com os termos de serviço. Depois de fazer isso, o certbot
irá se comunicar com o servidor Let’s Encrypt e, em seguida, executar um desafio para verificar que você controla o domínio para o qual está solicitando um certificado.
Se isso for bem-sucedido, o certbot
perguntará como você gostaria de configurar suas configurações 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):
Selecione sua escolha e pressione ENTER
. A configuração será atualizada, e o Nginx recarregará para aplicar as novas configurações. O certbot
encerrará com uma mensagem informando que o processo foi bem-sucedido e onde seus 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 foram baixados, instalados e carregados. Tente recarregar seu site usando https://
e observe o indicador de segurança do seu navegador. Deve indicar que o site está devidamente seguro, geralmente com um ícone de cadeado. Se você testar seu servidor usando o Teste de Servidor SSL Labs, ele obterá uma classificação A.
Vamos finalizar testando o processo de renovação.
Passo 5 — Verificando a Renovação Automática do Certbot
Os certificados do Let’s Encrypt são válidos apenas por noventa dias. Isso é para incentivar os usuários a automatizar o processo de renovação de seus certificados. O pacote certbot
que instalamos cuida disso para nós, adicionando um temporizador do systemd que será executado duas vezes por dia e renovará automaticamente qualquer certificado que esteja a trinta dias da expiração.
Você pode verificar o status do temporizador com systemctl
:
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 fazer uma simulação com certbot
:
Se você não ver erros, está tudo pronto. Quando necessário, o Certbot renovará seus certificados e recarregará o Nginx para aplicar 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ê especificou, avisando quando seu certificado estiver prestes a expirar.
Conclusão
Neste tutorial, você instalou o cliente Let’s Encrypt certbot
, baixou certificados SSL para seu domínio, configurou o Nginx para usar esses certificados e configurou a renovação automática de certificados. Se você tiver mais perguntas sobre o uso do Certbot, a documentação oficial é um bom lugar para começar.