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:
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:
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