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:
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);
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
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:
Instalar um cliente ACME: Faça o download e configure um cliente ACME de acordo com seu ambiente/necessidades.
Registrar conta: Use o cliente para criar uma conta com a CA, fornecendo as informações básicas necessárias.
Comprove a propriedade: Siga as instruções do cliente ACME para provar que você é o proprietário do domínio.
Obter certificado: Através do cliente, solicite o certificado para a CA.
Configurar o servidor: Ajuste as configurações do servidor para usar o novo certificado.
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:
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.
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.
(c) 2023 OmniSec
OmniSec Intelligence & Security
info@omniseccorp.com
+55 (19) 2042.3240
Sousas - Campinas - RMC - SP - Brasil