ACME
O protocolo ACME (Automatic Certificate Management Environment) é um padrão aberto da internet que permite a emissão, renovação e revogação totalmente automatizadas de certificados SSL. Graças ao ACME, os servidores web podem solicitar certificados por si próprios e renová-los automaticamente sem intervenção manual do administrador. As implementações de clientes ACME automatizam e simplificam significativamente a gestão de certificados numa altura em que os novos padrões estão a encurtar progressivamente a validade dos certificados SSL/TLS para um máximo de 47 dias até 2029.
Conteúdo do artigo
- O que é o protocolo ACME?
- Como funciona o ACME?
- Tipos de desafios ACME
- Clientes ACME – visão geral das ferramentas
O que é o protocolo ACME?
O ACME é um protocolo definido no RFC 8555 (publicado em 2019), que padroniza a comunicação entre um cliente (servidor web ou ferramenta de gestão de certificados) e uma autoridade de certificação (CA). Foi originalmente concebido e popularizado pela autoridade de certificação Let's Encrypt, que emite certificados DV gratuitos através do ACME.
O protocolo funciona segundo um princípio de challenge – response: o cliente prova à autoridade de certificação (CA) que controla efetivamente o domínio para o qual está a solicitar um certificado. Após a verificação bem-sucedida, a CA emite automaticamente o certificado. Todo o processo demora muito pouco tempo.
A abreviatura ACME significa Automatic Certificate Management Environment.
Como funciona o ACME?
A comunicação entre o cliente ACME e a autoridade de certificação (CA) ocorre exclusivamente através de HTTP REST API. O cliente e a CA trocam mensagens em formato JSON. Todo o processo pode ser resumido nos seguintes passos.
- Ativação da conta – O cliente ACME liga-se à CA utilizando credenciais EAB (external account binding). Envia o Key identifier (KID) e a chave HMAC.
- Pedido de certificado (Order) – O cliente envia à CA uma lista de domínios para os quais solicita um certificado. A CA devolve uma lista de desafios que o cliente tem de completar para cada domínio.
- Completar o desafio (Challenge) – O cliente escolhe um dos tipos de desafio oferecidos (HTTP-01, DNS-01, TLS-ALPN-01) e realiza a ação necessária – coloca um token no servidor ou define um registo DNS.
- Verificação pela CA – A CA verifica automaticamente se o desafio foi completado (visita o URL, verifica o registo DNS, etc.). A verificação bem-sucedida confirma a autorização do domínio.
- Emissão do certificado – O cliente envia um pedido de certificado (CSR). A CA assina o certificado e envia-o de volta ao cliente em formato PEM.
- Renovação automática – O cliente ACME configura a renovação regular na sua configuração. O certificado é normalmente renovado com suficiente antecedência em relação à expiração para evitar interrupções de HTTPS.
Tipos de desafios ACME
Para que a autoridade de certificação (CA) verifique que o requerente controla efetivamente o domínio, o protocolo ACME oferece três tipos de desafio padronizados:
HTTP-01
O cliente ACME coloca um ficheiro especial (token) no servidor web no diretório /.well-known/acme-challenge/. A CA verifica então a sua disponibilidade através de HTTP na porta 80. Este é o método de verificação mais utilizado.
Limitações: Não funciona para certificados WildCard. O domínio tem de estar publicamente acessível na porta 80.
DNS-01
O cliente cria um registo TXT especial no DNS do domínio na forma _acme-challenge.domenaxyz.cz com um token único da CA. A CA verifica o registo através do DNS. Este método de verificação permite obter um certificado WildCard.
Limitações: Requer acesso aos registos DNS do domínio. Pode ser mais lento devido à propagação das alterações de DNS.
TLS-ALPN-01
A verificação ocorre através de TLS na porta 443 utilizando a extensão ALPN (Application-Layer Protocol Negotiation). O cliente disponibiliza temporariamente um certificado especial com o token ACME.
Limitações: Pode ser complicado para alguns ambientes de alojamento.
Clientes ACME – visão geral das ferramentas
Existe uma vasta gama de ferramentas prontas a usar para trabalhar com o protocolo ACME.
Certbot
O cliente ACME mais popular da EFF.org. Integração automática com Apache e Nginx. Suporte para Linux e macOS. O Certbot é uma ferramenta amplamente utilizada e bem documentada que oferece comandos simples para obter e renovar certificados. Também tem um amplo suporte para vários servidores web e ambientes de alojamento.
acme.sh
Um cliente ACME minimalista escrito em shell com suporte para mais de 150 fornecedores de DNS. Linux, macOS, FreeBSD. O acme.sh foca-se na simplicidade e na ampla compatibilidade.
win-acme
Um cliente ACME para Windows com integração com IIS. Suporta tanto interface gráfica como linha de comandos. O win-acme é ideal para gerir certificados em servidores Windows, especialmente com IIS.
Lego
Um cliente ACME escrito em Go. Adequado para integração personalizada e scripting. O Lego é um cliente ACME flexível que pode ser facilmente integrado em sistemas e scripts personalizados graças à sua implementação na linguagem Go.
Para onde ir a seguir?
Voltar para Ajuda
Encontrou um erro ou não entendeu algo? Escreva para nós!
