Configurando certificado SSL gratuito no Ubuntu com Let’s Encrypt e certbot com renovação automática

Configure o certificado SSL gratuito e com renovação automática com o Certbot!

Emanuel Negromonte
10 minutos de leitura

Este tutorial é parte do guia completo que ajudará você a configurar um servidor web em uma vps com Nginx, MariaDB ou MySQL para WordPress. Além deste artigo, também sobre um outro sobre como melhorar a segurança da VPS em um servidor web.

Conhecendo o certificado SSL Let’s Encrypt

O certificado SSL Let’s Encrypt é um tipo de certificado digital que permite a criptografia de conexões entre um servidor web e um navegador. Ele é gratuito, automatizado e aberto, e tem como objetivo tornar a internet mais segura e acessível para todos.

O que é um certificado digital?

Um certificado digital é um arquivo que associa uma chave criptográfica às informações de uma organização ou indivíduo. Ele serve para estabelecer uma conexão segura entre um servidor web e um navegador, garantindo que os dados transmitidos sejam protegidos contra interceptação e alteração. Os certificados digitais também são importantes para aumentar a confiança dos usuários, pois eles indicam que o site é autêntico e possui uma identidade verificada por uma autoridade certificadora (AC).

Uma autoridade certificadora é uma entidade responsável por emitir e validar os certificados digitais. Existem várias ACs no mercado, mas a Let’s Encrypt se destaca por ser gratuita, automatizada e aberta. Isso significa que qualquer pessoa ou organização pode obter um certificado SSL da Let’s Encrypt sem custo, sem burocracia e sem restrições.

Fundação

A Let’s Encrypt foi lançada em 2015 pela Internet Security Research Group (ISRG), uma organização sem fins lucrativos que conta com o apoio de empresas como Google, Mozilla, Cisco, Facebook e outras. A missão da Let’s Encrypt é promover a segurança e a privacidade na internet, facilitando o acesso à criptografia para todos os sites.

Sobre o uso do certbot

Para obter um certificado SSL da Let’s Encrypt, é preciso utilizar um software chamado Certbot, que é um cliente do protocolo ACME (Automatic Certificate Management Environment). O Certbot é capaz de solicitar, verificar e instalar os certificados SSL da Let’s Encrypt de forma rápida e fácil. O processo envolve três etapas principais:

  • Solicitação: o Certbot gera uma solicitação de certificado contendo o nome do domínio, o tipo de certificado desejado e a chave pública do servidor.
  • Verificação: o Certbot realiza a verificação do domínio para garantir que o solicitante tem controle sobre ele. Isso pode ser feito de diferentes formas, como a criação de um arquivo específico no servidor web ou a configuração de registros DNS.
  • Instalação: o Certbot baixa e instala o certificado SSL no servidor web, configurando o protocolo HTTPS.

Validade do Let’s Encrypt

Os certificados SSL da Let’s Encrypt têm validade de 90 dias, mas o Certbot pode renová-los automaticamente antes do vencimento, garantindo a continuidade da segurança. Além disso, o Certbot também permite gerar certificados com wildcard (*), que são válidos para todos os subdomínios de um domínio.

As vantagens de usar o certificado SSL da Let’s Encrypt são:

  • É gratuito: não há custo para obter ou renovar os certificados.
  • É automatizado: não há necessidade de realizar manualmente as etapas de solicitação, verificação e instalação dos certificados.
  • É aberto: não há restrições ou limitações para usar os certificados em qualquer site ou plataforma.
  • É seguro: os certificados são emitidos e validados por uma AC reconhecida pelos principais navegadores de internet.
  • É popular: mais de 250 milhões de sites usam os certificados da Let’s Encrypt.

Instalando o certificado SSL Let’s Encrypt e ativando o certbot para renovar o certificado

Então, vamos instalar o pacote em Python que vai nos auxiliar na instalação e configuração do certificado SSL Let’s Encrypt no Ubuntu. Particulamente, acho mais fácil utilizar este método com certbot do que outros que encontrei nas pesquisas. Dito isso, execute o comando abaixo para adicionar o repositório:

sudo apt install software-properties-common && sudo add-apt-repository universe && sudo apt update

Agora que executamos os comandos para adicionar o repositório e atualizar as nossas fontes, vamos executar o comando para instalar:

sudo apt install certbot python3-certbot-nginx

Note que o pacote acima é exclusivo para o Nginx, que é o propósito deste tutorial.

Neste passo, vamos precisar que você já tenha um IP apontado para o domínio. Se você executar o comando abaixo sem que o IP da sua VPS tenha um registro A apontado para um domínio, não vai funcionar e pode dar erro. Nesta etapa vamos utilizar o Nginx Certbot plugin, que vai nos ajudar em tudo.

Troque o campo seusite.com.br pelo o seu domínio! Além disso, você também vai precisar inserir o seu e-mail de contato e também aceitar os termos.

sudo certbot --nginx certonly -d seusite.com.br -d www.seusite.com.br

Este comando vai gerar dois arquivos, o fullchain.pem e o privkey.pem. Veja o exemplo abaixo:

emanuel@cloud.sempreupdate.com.br :~ $ sudo certbot -- nginx certonly -d cloud.sempreupdate.com.br -d www.cloud.sempreupdate.com.br
Saving debug log to /var/log/letsencrypt/letsencrypt.log

Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel) : exemplo@gmail.com

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf. You must
agree in order to register with the ACME server. Do you agree?
(Y) es/ (N) o: Y

Key is saved at:
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.

(Y) es/ (N) o: y
Account registered.
Requesting a certificate for cloud.sempreupdate.com.br and www.cloud.sempreupdate.com.br

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/cloud.sempreupdate.com.br/fullchain.pem
/etc/letsencrypt/live/cloud.sempreupdate.com.br/privkey.pem
This certificate expires on 2024-01-25.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.

If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt:
Donating to EFF:

Como dissemos, estamos utilizando o Nginx Certbot plugin e ele também vai renovar o certificado SSL automaticamente sem que precisemos fazer isso manualmente. Porém, é preciso testar se isso vai funcionar corretamente em seu servidor, para testar simule a renovação usando o comando abaixo:

sudo certbot renew --dry-run

Exemplo de saída que tudo está correto e que a renovação do SSL automaticamente vai funcionar:

emanuel@cloud.sempreupdate.com.br:~ $ sudo certbot renew -- dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt. log
https://letsencrypt.org/donate
https://eff.org/donate-le
Processing /etc/letsencrypt/renewal/cloud.sempreupdate.com.br. conf
Account registered.
Simulating renewal of an existing certificate for cloud.sempreupdate.com.br and www.cloud.sempreupdate.com.br
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/cloud.sempreupdate.com.br/fullchain.pem (success)

Agora, vamos para próxima etapa. Vamos criar uma pasta no servidor para instalar o WordPress, ativar o cache e também uma pasta para os logs. Sim, precisamos disso!

Share This Article
Follow:
Fundador do SempreUPdate. Acredita no poder do trabalho colaborativo, no GNU/Linux, Software livre e código aberto. É possível tornar tudo mais simples quando trabalhamos juntos, e tudo mais difícil quando nos separamos.