Protocolo ACME

Imagine um mundo onde a segurança da camada de transporte se mantém automaticamente, sem a necessidade de procedimentos manuais e com a simplicidade de alguns comandos. Com o crescimento exponencial da web, proteger dados e garantir a integridade das comunicações é tarefa crucial e é nesse cenário que o protocolo ACME (Automatic Certificate Management Environment) surge como uma revolução, automatizando o gerenciamento de certificados digitais e tornando o processo mais rápido, eficiente, barato, simples e acessível para todos.

RISCOS

Wile Etherlbert

9/30/20244 min ler

INTRODUÇÃO

O protocolo ACME - Automatic Certificate Management Environment é um protocolo desenvolvido pela Internet Security Research Group (ISRG), a organização por trás do projeto Let's Encrypt, tendo as fundações EFF - Electronic Frontier Foundation, a Mozilla , Linux Foundation e Universidade de Michigan como iniciadores do projeto em 2016, mais adiante apoiados por Akamai, Cisco e IdenTrust. ACME, padronizado pela RFC-8555, tem como objetivo automatizar a obtenção e renovação de certificados digitais X.509, como os certificados SSL/TLS, que garantem a comunicação segura em quase toda a internet.

Antes do ACME, a emissão e renovação de certificados digitais era um processo manual e, digamos, até bem chato e burocrático em algumas CAs (Autoridades Certificadoras), o que resultava em atrasos, dúvidas, erros e, em alguns casos, exposição desnecessária de informações pessoais. O ACME simplifica esse processo ao permitir que servidores web interajam automaticamente com Autoridades Certificadoras (CAs) para:

  1. Validar a propriedade do domínio – O ACME autentica que o solicitante tem controle sobre o domínio para o qual o certificado está sendo emitido, atividade realizada por meio de desafios automáticos (como criar um registro DNS ou configurar um arquivo em um servidor web);

  2. Emitir certificados – Após a validação do domínio, o protocolo permite que um servidor obtenha automaticamente certificados SSL/TLS da autoridade certificadora; e

  3. Renovar certificados automaticamente – ACME automatiza a renovação de certificados antes de expirarem, evitando falhas de segurança e a inoperabilidade de ambientes.

É um protocolo amplamente utilizado em diversas ferramentas, CAs e plataformas de automação, como por exemplo o Certbot da Electronic Frontier Foundation, ou os ACME Clients (instalados nos servidores que consumirão o serviço), facilitando a configuração e uso pelos "consumidores" no processo de obtenção e gerencia de certificados de forma automática junto aos seus emissores.

Basicamente, opera baseado num par de chaves (pub/priv), interfaces baseadas em REST com mensageria em padrão JSON sob HTTPS. Sua adoção trouxe diversos benefícios, entre eles:

  • Maior segurança e escalabilidade na comunicação entre servidores e clientes;

  • Redução de custos associados à gestão de certificados;

  • Simplificação de processos para operadores de sites e CAs;

  • Redução do erro e intervenção humana, inclusive no fornecimento de informações sensíveis; e

  • Questões de conformidade/regulamentação, dependendo de seus negócios, certificados ou setor.

COMO CONFIGURAR?

Há diversos clientes ACME disponíveis (Certbot, ACMESharp, acme-client, GetSSL, Posh-ACME, Caddy, Sewer, nginx ACME, Peter SSLers...), para vários ambientes, versões de sistemas operacionais, bibliotecas e linguagens. De forma bem generalista, instalar o ACME requer:

  1. Instalar um cliente ACME: Faça o download e configure um cliente ACME de acordo com seu ambiente/necessidades.

  2. Registrar conta: Use o cliente para criar uma conta com a CA, fornecendo as informações básicas necessárias.

  3. Comprove a propriedade: Siga as instruções do cliente ACME para provar que você é o proprietário do domínio.

  4. Obter certificado: Através do cliente, solicite o certificado para a CA.

  5. Configurar o servidor: Ajuste as configurações do servidor para usar o novo certificado.

  6. Automatizar: Certifique-se de que o cliente ACME esteja configurado com a autorrenovação do certificado.

ALGUM EXEMPLO?

Sim, temos, mas considere que o procedimento pode sofrer alterações de acordo com seu ambiente, sistemas, versões e componentes utilizados.

Passo 1: Verifique o servidor

Antes de configurar o ACME, confirme que seu servidor esteja funcional, e em caso negativo, inicialize-o.

$ sudo systemctl status apache2

Passo 2: Instale o cliente

Em nosso. exemplo, usando Certbot, uma das ferramentas mais comumente utilizada, execute:

$ sudo apt update
$ sudo apt install certbot python3-certbot-apache

Passo 3: Solicite o certificado

Solicite o certificado SSL/TLS para o seu domínio. Durante o processo de criação, algumas informações simples serão solicitadas.

$ sudo certbot --apache

Passo 4: Validação de posse dom domínio

Durante o processo de emissão do certificado, o Certbot usará o protocolo ACME para validar que você controla o domínio para o qual está solicitando o certificado. Existem duas maneiras mais comuns de realizar essa validação:

  1. Validação HTTP: O Certbot cria um arquivo temporário em um diretório especial em seu servidor (normalmente /var/www/html/.well-known/acme-challenge) e depois tentará acessar o arquivo para comprovar o resultado.

  2. Validação DNS: Caso não seja possível usar o método HTTP (regras de firewall, auditorias, permissões ou configuração específica), pode se usar a criação um registro TXT no DNS do seu domínio.

Passo 5: Testar e verificar o certificado

Após a instalação do certificado, verifique se o site está acessível via HTTPS. No navegador, você deve ver o conhecido "cadeado de segurança" ao lado da barra de endereços, ou via linha de comando (CLI), usando:

$ curl -I https://seu-dominio.com

Passo 6: Automatize as renovações

Os certificados emitidos pelo Let's Encrypt têm validade de 90 dias (há opções de outros emissores de maior tempo). No entanto, o Certbot automaticamente cuida da renovação de certificados antes de sua expiração. Para garantir que a renovação seja feita corretamente, o Certbot configura uma tarefa cron para rodar periodicamente e verificar a necessidade de renovação.

Para testar se a renovação automática está funcionando, você pode executar um comando manual:

$ sudo certbot renew --dry-run

Passo 7: Monitore as notificações

Embora o Certbot cuide de boa parte do processo de renovação, você ainda pode receber e-mails da Let's Encrypt lembrando que um certificado está à expirar. Certifique-se de monitorar seu e-mail, criar outras automações/workflows e verificar periodicamente o status dos certificados no servidor.

CONCLUSÃO

No final das contas, o protocolo ACME é ótimo e pode ajudar demais no gerenciamento de múltiplos sites e certificados, para diversos ambientes e produtos, nada se assemelhando as famosas engenhocas atrapalhadas da ACME Inc. Conhecia o ACME e outras aplicações de uso? Aproveite o post.