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 para 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, é desenvolvido pela Electronic Frontier Foundation. Além de verificar a propriedade do domínio e obter certificados, o Certbot pode configurar automaticamente 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 então revisará alguns clientes ACME populares.

O que é uma Autoridade de Certificação?

As autoridades de certificação (CAs) são entidades que assinam criptograficamente certificados TLS/SSL para garantir sua autenticidade. Navegadores e sistemas operacionais têm uma lista de CAs confiáveis que eles usam para verificar os certificados dos sites.

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, automatizando completamente o procedimento e contando com patrocínio e doações para financiar a infraestrutura necessária.

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

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

Como Funciona o Let’s Encrypt

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 fazer o download dos 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 o pedido 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 calculará uma chave a partir do token único e um token de conta, depois 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 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 provisionará um certificado autoassinado com a chave incluída. O desafio DNS procura a chave em um registro DNS TXT.

O Cliente Certbot Let’s Encrypt

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. Em seguida, você deve conseguir 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 do 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 criado inicialmente 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 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 da web do Certbot, mas eles têm outros recursos que podem lhe interessar:

  • Existe um cliente escrito na maioria das linguagens de programação, incluindo scripts de shell, Go e Node.js. Isso pode ser importante se estiver a criar certificados num ambiente restrito e preferir não incluir dependências do Python e de 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 com privilégios
  • Muitos clientes podem automatizar o desafio baseado em DNS, utilizando a API do seu provedor de DNS para criar automaticamente o registro TXT apropriado. O desafio DNS possibilita alguns casos de uso mais complicados, como a criptografia de servidores web que não estão acessíveis publicamente
  • Alguns clientes estão integrados aos servidores web, proxies reversos ou balanceadores de carga, o que torna extra fácil configurar e implantar

Alguns dos clientes mais populares são:

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

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

Conclusão

Passamos pelos 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