Uma Introdução ao Let’s Encrypt

Introdução

Let’s Encrypt é uma autoridade de certificação aberta e automatizada que utiliza o protocolo ACME (Ambiente de Gerenciamento Automático de Certificados) para fornecer certificados TLS/SSL gratuitos a qualquer cliente compatível. Esses certificados podem ser usados para criptografar a comunicação entre seu servidor web e seus usuários. Existem dezenas de clientes disponíveis, escritos em várias linguagens de programação, e muitas integrações com ferramentas administrativas populares, serviços e servidores.

O cliente ACME mais popular, Certbot, é agora desenvolvido pela Electronic Frontier Foundation. Além de verificar a propriedade do domínio e obter certificados, o Certbot pode configurar automaticamente o TLS/SSL em servidores web Apache e Nginx.

Este tutorial discutirá brevemente as autoridades de certificação e como o Let’s Encrypt funciona, e em seguida, revisará alguns clientes ACME populares.

O que é uma Autoridade de Certificação?

Autoridades de certificação (CAs) são entidades que assinam criptograficamente certificados TLS/SSL para atestar sua autenticidade. Navegadores e sistemas operacionais possuem uma lista de CAs confiáveis que eles utilizam para verificar os certificados do site.

Até recentemente, a maioria das CAs eram operações comerciais que cobravam dinheiro por seus serviços de verificação e assinatura. O Let’s Encrypt tornou esse processo gratuito para os usuários ao automatizar completamente o procedimento e ao depender de patrocínio e doações para financiar a infraestrutura necessária.

Para obter mais informações sobre certificados e os diferentes tipos de autoridades de certificação, você pode ler “Uma Comparação entre Let’s Encrypt, Autoridades de Certificação Comerciais e Privadas, e Certificados SSL Autoassinados.”

A seguir, vamos analisar como o Let’s Encrypt realiza a verificação automatizada de domínio.

Como o Let’s Encrypt Funciona

O protocolo ACME do Let’s Encrypt define como os clientes se comunicam com seus servidores para solicitar certificados, verificar a propriedade do domínio e baixar certificados. Atualmente, está em processo de se tornar um padrão oficial do IETF.

Let’s Encrypt oferece certificados validados por domínio, o que significa que eles precisam verificar que a solicitação de certificado vem de uma pessoa que realmente controla o domínio. Eles fazem isso enviando ao cliente um token único e, em seguida, fazendo uma solicitação web ou DNS para recuperar uma chave derivada desse token.

Por exemplo, com o desafio baseado em HTTP, o cliente irá calcular uma chave a partir do token único e um token de conta, e então colocar os resultados em um arquivo para ser servido pelo servidor web. Os servidores Let’s Encrypt então recuperam o arquivo em http://exemplo.com/.well-known/acme-challenge/token. Se a chave estiver correta, o cliente provou que pode controlar recursos em exemplo.com, e o servidor irá assinar e retornar um certificado.

O protocolo ACME define vários desafios que seu cliente pode usar para provar a propriedade do domínio. O desafio HTTPS é semelhante ao HTTP, exceto que, em vez de um arquivo de texto, o cliente irá provisionar um certificado autoassinado com a chave incluída. O desafio DNS procura a chave em um registro TXT do DNS.

O Cliente Let’s Encrypt Certbot

O Certbot é de longe o cliente Let’s Encrypt mais popular. Ele está incluído na maioria das principais distribuições Linux e inclui convenientes capacidades de configuração automática para Apache e Nginx. Uma vez instalado, obter um certificado e atualizar sua configuração do Apache pode ser feito assim:

  1. sudo certbot --apache -d www.example.com

O Certbot fará algumas perguntas, executará o desafio, baixará os certificados, atualizará sua configuração do Apache e recarregará o servidor. Você então deve ser capaz de navegar para https://www.example.com com seu navegador da web. Um cadeado verde aparecerá indicando que o certificado é válido e a conexão está criptografada.

Como os certificados Let’s Encrypt são válidos apenas por noventa dias, é importante configurar um processo de renovação automatizado. O seguinte comando renovará todos os certificados em uma máquina:

  1. sudo certbot renew

Coloque o comando acima em um crontab para executá-lo todos os dias, e os certificados serão renovados automaticamente trinta dias antes de expirarem. Se um certificado foi inicialmente criado com as opções --apache ou --nginx, o Certbot recarregará o servidor após uma renovação bem-sucedida.

Se você gostaria de aprender mais sobre o cron e crontabs, consulte o tutorial “Como Usar o Cron Para Automatizar Tarefas”.

Outros Clientes

Como o protocolo ACME é aberto e bem documentado, muitos clientes alternativos foram desenvolvidos. O Let’s Encrypt mantém uma lista de clientes ACME em seu site. A maioria dos outros clientes não possui os recursos automáticos de configuração do servidor web do Certbot, mas eles têm outros recursos que podem ser do seu interesse:

  • Existe um cliente escrito na maioria das linguagens de programação, incluindo scripts de shell, Go e Node.js. Isso pode ser importante se você estiver criando certificados em um ambiente restrito e preferir não incluir dependências do Python e outros Certbot
  • Alguns clientes podem ser executados sem privilégios de root. Geralmente é uma boa ideia executar a menor quantidade possível de código privilegiado
  • Muitos clientes podem automatizar o desafio baseado em DNS usando a API do seu provedor DNS para criar automaticamente o registro TXT apropriado. O desafio de DNS permite alguns casos de uso mais complicados, como a criptografia de servidores web que não são publicamente acessíveis
  • Alguns clientes estão integrados a servidores web, proxies reversos ou balanceadores de carga, o que torna ainda mais fácil configurar e implantar

Alguns dos clientes mais populares são:

  • lego: Escrito em Go, lego é uma instalação binária de um único arquivo e suporta muitos provedores de DNS ao usar o desafio de DNS
  • acme.sh: acme.sh é um simples script de shell que pode ser executado em modo não privilegiado e também interagir com mais de 30 provedores de DNS
  • Caddy: Caddy é um servidor web completo escrito em Go com suporte integrado para Let’s Encrypt

Muitos outros clientes estão disponíveis, e muitos outros servidores e serviços estão automatizando a configuração de TLS/SSL integrando suporte ao Let’s Encrypt.

Conclusão

Nós explicamos os fundamentos de como o Let’s Encrypt funciona e discutimos alguns dos softwares clientes disponíveis. Se você deseja instruções mais detalhadas sobre como usar o Let’s Encrypt com vários softwares, os seguintes tutoriais são um bom ponto de partida:

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt