Capítulo 7: Conectividade e Redes
7.5 Let's Encrypt e o Serviço de Certificados do OCI
7.5.1 Let's Encrypt

A comunicação segura na web é garantida pelo HTTPS, que exige a utilização de um certificado digital. Esse certificado permite que os navegadores autentiquem a identidade dos servidores web, assegurando a integridade e a confidencialidade das informações trocadas.
Uma Autoridade Certificadora (CA - Certification Authority) é uma entidade responsável pela emissão e gerenciamento de certificados digitais
A única maneira de um servidor na web comprovar sua identidade é por meio de um certificado digital emitido por uma autoridade certificadora confiável e reconhecida. Esse mecanismo é fundamental para estabelecer a confiança em um site.
Let’s Encrypt é uma organização sem fins lucrativos dedicada a promover uma web mais segura e que respeita a privacidade dos usuários, incentivando e promovendo a adoção em larga escala do HTTPS.
Como uma autoridade certificadora global, a Let’s Encrypt possibilita que pessoas e organizações em todo o mundo obtenham, renovem e gerenciem certificados SSL/TLS de forma gratuita. Esses certificados podem ser utilizados por servidores web para habilitar conexões seguras por meio do protocolo HTTPS.
É possível afirmar que qualquer site pode agora adotar o HTTPS por meio do Let’s Encrypt. Além disso, todos os navegadores modernos já confiam nos certificados emitidos por essa autoridade certificadora.
Vale ressaltar que existem outras autoridades certificadoras disponíveis, como a VeriSign, Certisign e DigiCert, entre outras. No entanto, todas elas cobram taxas pela emissão de certificados.
Certbot
Vamos iniciar com a instalação da ferramenta Certbot e prosseguiremos até a emissão de um certificado digital válido, que será utilizado na aplicação OCI Pizza.
O Certbot é uma ferramenta que opera em modo cliente e é utilizada para obter certificados digitais emitidos pela Let’s Encrypt.
NOTA
Existem várias maneiras de instalar o Certbot. Recomendo visitar a página oficial para explorar outras opções de instalação, acessando o link Certbot Instructions.
Aqui, seguiremos a instalação do Certbot utilizando Python e seu gerenciador de pacotes, o pip. Todo o processo será realizado dentro de um ambiente virtual Python (venv).
NOTA
A instalação do Certbot requer que algumas bibliotecas do sistema operacional estejam instaladas previamente. No meu caso, foi necessário instalar os pacotes libffi-dev, python3-dev e openssl-dev para assegurar uma instalação bem-sucedida do Certbot. Para mais informações, consulte o link System Requirements.
Após a instalação, você pode verificar a versão do Certbot utilizando o comando abaixo:
Obtendo um certificado por meio do DNS Challenge
Uma das formas de obter um certificado digital emitido pelo Let’s Encrypt é através do DNS Challenge. Esse método é utilizado para comprovar ao Let’s Encrypt que somos os proprietários do domínio "ocipizza.com.br". Assim, será emitido um certificado digital válido para um host (www) associado a esse domínio.
NOTA
O comando abaixo será executado com o usuário root. Se você estiver utilizando outro usuário, será necessário criar alguns diretórios com as permissões adequadas. Para mais detalhes, consulte a documentação oficial no link Documentation.
A saída do comando acima corresponde a um registro DNS do tipo TXT (_acme-challenge.www.ocipizza.com.br) e seu respectivo valor (XaAAAAAAAOZ-uUU-BaCOPAPAMdamsDASKDASAI_AAOE). Antes de prosseguir, é necessário adicionar esse registro com o valor correspondente no domíno "ocipizza.com.br" no Serviço de DNS Público do OCI:
Tendo os valores inseridos no DNS, é possível seguir novamente com o Certbot que irá então, se tudo estiver correto, emitir o certificado para o host "www" do domínio "ocipizza.com.br":
Neste caso, o certificado e a chave privada foram salvos nos diretórios correspondentes do sistema operacional:
-
Certificados Intermediários e Certificado do Domínio:
- /etc/letsencrypt/live/www.ocipizza.com.br/fullchain.pem
-
Chave Privada
- /etc/letsencrypt/live/www.ocipizza.com.br/privkey.pem
7.5.2 Serviço de Certificados do OCI
O Serviço de Certificados do OCI é uma solução dedicada ao gerenciamento de certificados digitais. Além de gerenciar todo o ciclo de vida de um certificado, incluindo operações de renovação e revogação, o serviço também emite novos certificados e permite a importação de certificados já emitidos.
NOTA
Todos os comandos utilizados neste capítulo estão disponíveis nos scripts scripts/chapter-3/cert-saopaulo.sh e scripts/chapter-3/cert-vinhedo.sh.
Utilizar o Serviço de Certificados do OCI é especialmente vantajoso quando se tem vários Load Balancers que compartilham o mesmo certificado para o HTTPS. Ao chegar o momento de substituir esse certificado, como em casos de expiração, você pode realizar a alteração diretamente no Serviço de Certificados, em vez de precisar atualizar cada Load Balancer individualmente.
Primeiramente, é necessário separar do arquivo fullchain.pem a parte que corresponde ao certificado da aplicação da parte que se refere aos certificados intermediários. Isso pode ser feito utilizando o script abaixo:
Foram criados dois arquivos, além da chave privada, que já existia em outro diretório e foi movida para este local para facilitar o processo de importação.
-
cert.pem
- Arquivo do Certificado Digital da aplicação (www.ocipizza.com.br)
-
privkey.pem
- Chave Privada do Certificado Digital da aplicação.
-
chain.pem
- Arquivo que contém os Certificados Intermediários utilizados pelo Let's Encrypt.
Para criar e importar o certificado no Serviço de Certificados, utilize o comando abaixo:
O comando abaixo é utilizado para obter o OCID do certificado recém-importado:
Para concluir, o comando a seguir remove o registro DNS do tipo TXT que foi utilizado pelo Let’s Encrypt, uma vez que não será mais necessário: