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