Automatize certificados com suporte ao protocolo ACME no AWS Certificate Manager

O problema que forçou essa mudança

Gerenciar certificados TLS em escala é uma das maiores dores operacionais de times de infraestrutura. E esse cenário está prestes a ficar ainda mais exigente: o Fórum CA/Browser (CA/Browser Forum) determinou uma redução progressiva na validade máxima dos certificados públicos. Em março de 2027, o limite cai para 100 dias. Em março de 2029, chega a apenas 47 dias.

Para ter uma ideia do impacto: uma organização que gerencia 1.000 certificados precisará lidar com cerca de 30 eventos de renovação por dia quando a janela de 47 dias entrar em vigor. Processos manuais ou fluxos baseados em tickets simplesmente não são capazes de sustentar essa cadência.

Foi nesse contexto que a AWS anunciou o suporte ao protocolo ACME (Ambiente de Gerenciamento Automatizado de Certificados) no AWS Certificate Manager (ACM). A novidade permite que equipes utilizem clientes ACME já conhecidos — como certbot, cert-manager, acme.sh e win-acme — para automatizar a emissão e renovação de certificados públicos em qualquer infraestrutura.

O que é o ACME e por que ele importa

O ACME é um protocolo de código aberto que automatiza a verificação de propriedade de domínio e a emissão de certificados. Ele se tornou o mecanismo padrão para automação de certificados no setor.

O ACM já oferecia emissão e renovação gerenciadas de certificados para serviços integrados da AWS, como Elastic Load Balancing (ELB), Amazon CloudFront e Amazon API Gateway. Mas muitos clientes também precisam automatizar certificados para infraestruturas próprias — servidores em data centers, clusters Kubernetes, frotas de Internet das Coisas (IoT) e ambientes híbridos. Até agora, esses cenários exigiam recorrer a provedores externos. Com o suporte ACME, o ACM passa a atender também essa demanda, usando o protocolo padrão com endpoints gerenciados pela AWS.

Como a arquitetura funciona

O recurso introduz um novo tipo de recurso gerenciado centralmente: o endpoint ACME. Cada endpoint é um recurso AWS com uma URL de diretório ACME exclusiva e controles de acesso baseados no AWS Identity and Access Management (IAM). Os endpoints são criados e gerenciados via API do ACM ou pelo Console de Gerenciamento da AWS.

A arquitetura se divide em dois planos:

  • Plano de controle: administradores de Infraestrutura de Chave Pública (PKI) usam as APIs do ACM para criar endpoints ACME, pré-aprovar os domínios que cada endpoint pode emitir certificados e gerar credenciais de Vinculação de Conta Externa (EAB).
  • Plano de dados: clientes ACME se registram em um endpoint usando credenciais EAB e solicitam certificados para domínios que o administrador já validou. Assim, os proprietários de aplicações não precisam de credenciais DNS para obter um certificado.

As credenciais EAB controlam o acesso dos clientes aos endpoints. Cada EAB está vinculado a uma função (role) do IAM que define quais operações o cliente ACME pode realizar. Um cliente autorizado para um endpoint de desenvolvimento, por exemplo, não consegue obter certificados do endpoint de produção — o que cria fronteiras de segurança claras entre ambientes.

Os certificados emitidos por ACME são automaticamente registrados no inventário do ACM, aparecendo junto com certificados criados pelas APIs RequestCertificate e ImportCertificate. O Amazon EventBridge e o AWS CloudTrail fornecem alertas de expiração e logs de auditoria.

Imagem original — fonte: Aws

Como começar: passo a passo

A seguir, os passos para criar o primeiro certificado via ACME no ACM. Os exemplos utilizam a Interface de Linha de Comando da AWS (AWS CLI). Há também um post equivalente via console.

Pré-requisitos

  • Uma conta AWS com permissões para criar e gerenciar recursos do ACM
  • Um cliente ACME instalado na sua infraestrutura (certbot, cert-manager, acme.sh, entre outros)
  • AWS CLI instalado
  • Zona hospedada no Amazon Route 53 ou capacidade de criar um registro CNAME no seu provedor de DNS

Passo 1: Criar um endpoint ACME

O endpoint fornece a URL que os clientes ACME utilizarão para solicitar certificados.

aws acm create-acme-endpoint \
  --authorization-behavior PRE_APPROVED \
  --certificate-authority '{"PublicCertificateAuthority":{"AllowedKeyAlgorithms":["EC_prime256v1"]}}'

Anote o Nome de Recurso Amazon (ARN) do endpoint retornado na resposta:

{"AcmeEndpointArn": "arn:aws:acm:us-east-1:123456789012:acme-endpoint/11111111-2222-3333-4444-555555555555"}

Em seguida, recupere a URL do endpoint:

aws acm describe-acme-endpoint \
  --acme-endpoint-arn arn:aws:acm:us-east-1:123456789012:acme-endpoint/11111111-2222-3333-4444-555555555555

Salve o valor de EndpointUrl retornado:

{
  "AcmeEndpoint": {
    "AcmeEndpointArn": "arn:aws:acm:us-east-1:123456789012:acme-endpoint/11111111-2222-3333-4444-555555555555",
    "EndpointUrl": "https://acm-acme-enroll.<region>.api.aws/6666666-7777-8888-9999-000000000000/directory",
    "Status": "ACTIVE",
    "AuthorizationBehavior": "PRE_APPROVED",
    "Contact": "REQUIRED",
    "CertificateAuthority": {
      "PublicCertificateAuthority": {
        "AllowedKeyAlgorithms": [
          "EC_prime256v1"
        ]
      }
    },
    "CreatedAt": "2026-07-14T18:23:58.876000-04:00",
    "UpdatedAt": "2026-07-14T18:23:58.876000-04:00"
  }
}

Passo 2: Pré-aprovar um domínio

Antes que os clientes ACME possam solicitar certificados, o administrador valida o domínio via DNS uma única vez, no nível do endpoint. O parâmetro DomainScope controla exatamente quais padrões de certificado são permitidos:

  • ExactDomain habilitado: restringe ao nome exato do domínio
  • Subdomains habilitado: permite nomes como api.example.com
  • Wildcards habilitado: permite *.example.com

Para um endpoint de produção, a recomendação é habilitar apenas ExactDomain e Subdomains, deixando Wildcards desabilitado para uma postura mais restritiva.

aws acm create-acme-domain-validation \
  --acme-endpoint-arn arn:aws:acm:us-east-1:123456789012:acme-endpoint/11111111-2222-3333-4444-555555555555 \
  --domain-name example.com \
  --prevalidation-options '{"DnsPrevalidation":{"DomainScope":{"ExactDomain":"ENABLED","Subdomains":"ENABLED","Wildcards":"DISABLED"},"HostedZoneId":"Z1234567890ABC"}}'

Se o domínio estiver hospedado no Route 53, o parâmetro HostedZoneId permite que o ACM crie o registro CNAME automaticamente. Para outros provedores de DNS, omita esse parâmetro e crie o registro manualmente. A validação normalmente é concluída em poucos segundos após o registro estar no lugar.

Passo 3: Gerar credenciais EAB

As credenciais EAB autenticam os clientes ACME no endpoint. O ideal é gerar um conjunto exclusivo de credenciais para cada cliente ou ambiente.

aws acm create-acme-external-account-binding \
  --acme-endpoint-arn arn:aws:acm:region:111122223333:acme-endpoint/00000000-0000-0000-0000-000000000000 \
  --role-arn arn:aws:iam::111122223333:role/AcmeIssuanceRole \
  --expiration '{"Value": 7, "Type": "DAYS"}'

Para recuperar as credenciais geradas:

aws acm get-acme-external-account-binding-credentials \
  --acme-external-account-binding-arn arn:aws:acm:region:111122223333:acme-endpoint/00000000-0000-0000-0000-000000000000/acme-external-account-binding/22222222-2222-2222-2222-222222222222

Salve os valores de KeyId e MacKey para a próxima etapa.

{
  "KeyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "MacKey": "xxxxxxxx-xxxxxxxxxx-xxxxxxxxxxxxxxx"
}

Passo 4: Configurar o cliente ACME

Com a URL do endpoint e as credenciais EAB em mãos, configure o cliente ACME de sua preferência. Exemplos para dois clientes populares:

acme.sh:

acme.sh --issue --server https://acm-acme-enroll.us-east-1.api.aws/123457-1234-1234-123456789012/directory \
  --eab-kid <KeyId> --eab-hmac-key <MacKey> \
  --email <EMAIL> \
  -d <DOMAIN> \
  --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

Certbot:

certbot certonly --standalone --non-interactive --agree-tos \
  --email <EMAIL> \
  --server https://acm-acme-enroll.us-east-1.api.aws/1234567-1234-1234-123456789012/directory \
  --eab-kid <KeyId> \
  --eab-hmac-key <MacKey> \
  -d <DOMAIN>

Após o registro inicial, o cliente ACME passa a gerenciar as renovações automaticamente.

Controles empresariais e boas práticas

Validação de domínio granular

Para cada domínio validado, é possível definir exatamente quais padrões de certificado são permitidos — ExactDomain, Subdomains ou Wildcards. Essa aplicação acontece no nível do endpoint, antes que as requisições cheguem à autoridade certificadora do ACM. Múltiplos domínios podem ser validados em um único endpoint, cada um com seu próprio escopo.

Visibilidade centralizada de certificados

Todos os certificados emitidos pelos endpoints ACME são registrados no ACM. O comando aws acm list-certificates exibe o inventário completo. As operações de gerenciamento de endpoints são autorizadas via IAM e registradas no CloudTrail, permitindo auditoria detalhada de quem criou endpoints, gerou credenciais EAB e gerenciou restrições de domínio.

Segmentação de endpoints por ambiente

A recomendação da AWS é segmentar endpoints por fronteiras organizacionais ou de ambiente. Um ponto de partida razoável é criar um endpoint por ambiente (dev, staging e produção) dentro de uma unidade de negócio, expandindo para endpoints por unidade de negócio apenas quando requisitos de conformidade ou organizacionais exigirem. Credenciais comprometidas em um ambiente não têm caminho para certificados de outro.

Gerenciamento seguro de credenciais EAB

Qualquer pessoa que possua um KeyId e MacKey válidos pode obter certificados para qualquer domínio pré-aprovado no endpoint — portanto, essas credenciais merecem o mesmo cuidado dado a chaves de acesso. A AWS recomenda evitar codificar o MacKey diretamente no código, usando um cofre de segredos como o AWS Secrets Manager. Também é importante criar uma função (role) IAM por EAB, em vez de compartilhar uma única role entre todos os bindings, e configurar o tempo de expiração do EAB de acordo com o perfil de risco da organização.

No CloudTrail, vale monitorar separadamente as chamadas CreateAcmeExternalAccountBinding e GetAcmeExternalAccountBindingCredentials — alertar sobre eventos de recuperação das credenciais é um sinal mais forte de distribuição real do que apenas a criação do binding.

Automação do ciclo de vida dos EABs

Para escalar com múltiplos endpoints, algumas práticas ajudam a reduzir o esforço operacional:

  • Nomeie cada EAB e sua role IAM vinculada com o nome do cliente ao qual pertence (time, aplicação, ambiente)
  • Armazene o KeyId e o MacKey de cada cliente em um caminho de segredos específico (por exemplo, um caminho no Secrets Manager por time e ambiente)
  • No Kubernetes, use um ClusterIssuer ou Issuer com escopo de namespace por EAB, em vez de um issuer compartilhado entre times
  • Para infraestrutura efêmera (agentes de build, frotas com autoescalamento), provisione credenciais EAB como parte do pipeline de Integração e Entrega Contínuas (CI/CD), para que o ciclo de vida das credenciais acompanhe o da infraestrutura

Monitoramento contínuo

Com certificados de 47 dias de validade, uma falha silenciosa de renovação deixa muito menos tempo de reação do que as janelas longas às quais os times estavam acostumados. Por isso, a AWS recomenda configurar alarmes para falhas de emissão — não apenas para sucessos — e testar a automação de renovação em um endpoint de não-produção antes de depender dela em produção.

Disponibilidade e preços

O suporte ao ACME no AWS Certificate Manager está disponível hoje em todas as regiões comerciais da AWS. A disponibilidade para AWS GovCloud (EUA), Regiões da China e AWS European Sovereign Cloud será anunciada em momento posterior. Consulte a página de preços do ACM para informações sobre os valores cobrados pelo recurso ACME.

Conclusão

A redução progressiva na validade dos certificados é um problema que não tem solução sem automação. O suporte ao ACME no ACM oferece essa automação por meio de um protocolo e ferramentas já padronizados no mercado, mantendo a visibilidade e os controles de governança que os times de segurança esperam do ACM. Para começar, consulte a documentação do AWS Certificate Manager ou siga o guia de introdução.

Fonte

Automate certificates with ACME support in AWS Certificate Manager (https://aws.amazon.com/blogs/security/automate-certificates-with-acme-support-in-aws-certificate-manager/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *