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, permitindo assim o HTTPS criptografado em servidores web. Simplifica o processo fornecendo 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 de servidor Nginx separado 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 gestão do Nginx e do Let’s Encrypt. A Plataforma de Aplicativos da DigitalOcean permite que você implante diretamente do GitHub em minutos. A Plataforma de Aplicativos 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 o Freenom, ou usar o registrador de domínios de sua escolha. -
Ambos os seguintes registros DNS configurados para o seu servidor. Se 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 o Guia de Instalação do Nginx no Ubuntu 20.04. Certifique-se de que tem um bloco de servidor para o 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 ser usado, mas para que ele configure 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 seu domínio em /etc/nginx/sites-available/exemplo.com
com a diretiva server_name
já definida apropriadamente.
Para verificar, abra o arquivo de configuração para o seu domínio usando o nano
ou o seu editor de texto favorito:
Encontre a 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, 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. Depois que a sintaxe do arquivo de configuração estiver correta, recarregue o Nginx para carregar a nova configuração:
Certbot agora pode encontrar o bloco de server
correto e atualizá-lo automaticamente.
Em seguida, vamos atualizar o firewall para permitir o tráfego HTTPS.
Passo 3 — Permitindo HTTPS através do Firewall
Se você tiver o firewall ufw
ativado, como 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 ver a configuração atual digitando:
Provavelmente, 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 permitir também o tráfego HTTPS, permita o perfil Nginx Full e exclua a permissão redundante do perfil Nginx HTTP:
Sua configuração deve parecer 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 obter 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 a inserir um endereço de e-mail e concordar com os termos de serviço. Depois de fazer isso, o certbot
se comunicará com o servidor Let’s Encrypt, 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 será recarregado para pegar as novas configurações. O certbot
concluirá 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 estão 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 protegido, geralmente com um ícone de cadeado. Se você testar seu servidor usando o Teste de Servidor SSL Labs, ele obterá uma nota A.
Vamos terminar testando o processo de renovação.
Passo 5 — Verificando a Renovação Automática do Certbot
Os certificados da Let’s Encrypt são válidos por apenas noventa dias. Isso é para incentivar os usuários a automatizarem o processo de renovação do certificado. O pacote certbot
que instalamos cuida disso para nós, adicionando um temporizador do systemd que será executado duas vezes ao dia e renovará automaticamente qualquer certificado que esteja dentro de 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 um teste seco com certbot
:
Se não houver 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, a 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 o 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.