View a markdown version of this page

Emissão de certificados por meio da ACME - AWS Certificate Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Emissão de certificados por meio da ACME

Depois que seu administrador de PKI configura um endpoint ACME com validações de domínio e associações de contas externas, os proprietários de aplicativos podem usar clientes ACME para emitir certificados. Esta seção descreve o fluxo de emissão, fornece um breve exemplo do uso do Certbot e explica como os ACME-issued certificados aparecem no ACM.

Como funciona a emissão

O fluxo de emissão do certificado ACME segue o protocolo RFC 8555:

  1. Registro da conta: O cliente ACME registra uma conta usando as credenciais do EAB (ID da chave e chave MAC). Essa é uma etapa única por cliente ACME.

  2. Pedido de certificado: o cliente cria um pedido especificando os nomes de domínio para o certificado.

  3. Autorização: o servidor ACME verifica as validações de domínio pré-configuradas. Como o endpoint usa PRE_APPROVED autorização, nenhum desafio real é exigido do cliente.

  4. Finalizar: o cliente envia uma Solicitação de Assinatura de Certificado (CSR) para finalizar o pedido e o ACM emite o certificado.

  5. Download: o cliente baixa a cadeia de certificados emitida.

Importante

A chave privada é gerada pelo cliente ACME e nunca sai do sistema do cliente.

Exemplo: emissão de um certificado com o Certbot

Este exemplo mostra como registrar uma conta ACME e solicitar um certificado usando o Certbot.

Pré-requisitos

  • Um endpoint ACME em ACTIVE status (você tem o URL do diretório)

  • Pelo menos uma validação de domínio em VALID status para o domínio que você deseja

  • Credenciais EAB (ID da chave e chave MAC) do seu administrador de PKI

  • Certbot instalado em seu sistema

Para registrar uma conta e solicitar um certificado

Importante

A emissão do certificado por meio do endpoint ACM ACME pode levar até dois minutos. Configure o tempo limite de emissão do seu cliente ACME em pelo menos 120 segundos (2 minutos) para evitar que o cliente atinja o tempo limite antes da entrega do certificado. Muitos clientes ACME usam como padrão 30 a 90 segundos, o que não é suficiente.

Execute este comando: .

certbot certonly \ --standalone \ --non-interactive \ --agree-tos \ --email user@example.com \ --server https://acm-acme-enroll.region.api.aws/00000000-0000-0000-0000-000000000000/directory \ --eab-kid AAABBBCCC111222333 \ --eab-hmac-key base64encodedmackey \ --issuance-timeout 120 \ --domain www.example.com

Após a emissão bem-sucedida, o Certbot armazena o certificado e a chave privada em seu local padrão (normalmente). /etc/letsencrypt/live/www.example.com/

Certificados ACME no ACM

Os certificados emitidos pela ACME recebem automaticamente um ARN padrão do certificado ACM e aparecem no inventário de certificados do ACM. No entanto, ACME-issued os certificados têm diferenças importantes em relação aos certificados emitidos porRequestCertificate.

Principais diferenças

  • A chave privada é do lado do cliente: a chave privada do certificado é gerada e armazenada pelo cliente ACME. O ACM não tem acesso à chave privada.

  • Não é possível se vincular a serviços integrados: como AWS não contém a chave privada, os certificados ACME não podem ser usados com o Elastic Load Balancing ou o API CloudFront Gateway.

  • Não está na saída da lista padrão: os certificados ACME não aparecem nos ListCertificates resultados por padrão. Você deve incluir o CertificateKeyPairOrigins filtro com valor ACME para incluí-los. SearchCertificatesretorna certificados ACME por padrão.

  • Não é possível exportar por meio do ACM: a ExportCertificate API não pode ser usada porque o certificado já foi exportado por definição, pois o cliente o possui.

  • Revogação somente por meio da ACME: use a URL revoke-cert do endpoint da ACME. A RevokeCertificate API do ACM não funciona para ACME-issued certificados.

  • A renovação é orientada pelo cliente: o ACM não renova automaticamente os certificados ACME. O cliente ACME deve solicitar um novo certificado antes que o existente expire.

Visualizando certificados ACME

No console do ACM, use o filtro para incluir certificados com uma origem de par de chaves ACME. Para obter mais informações sobre como encontrar certificados, consultePesquisar certificados.

Para listar os certificados ACME (AWS CLI)

Use list-certificates com o CertificateKeyPairOrigins filtro:

aws acm list-certificates \ --certificate-key-pair-origins ACME

Para pesquisar certificados ACME (AWS CLI)

Use search-certificates com o CertificateKeyPairOrigin filtro para encontrar certificados ACME por critérios adicionais:

aws acm search-certificates \ --filter-statement '{"Filter": {"AcmCertificateMetadataFilter": {"CertificateKeyPairOrigin": "ACME"}}}'

Você também pode pesquisar certificados emitidos por meio de um endpoint específico ou conta ACME filtrando em ou. AcmeEndpointArn AcmeAccountId

Para ver os detalhes do certificado (AWS CLI)

Execute este comando: .

aws acm describe-certificate \ --certificate-arn arn:aws:acm:region:account-id:certificate/certificate-id

Revogando certificados ACME

Para revogar um certificado emitido pela ACME, use o endpoint revoke-cert do protocolo ACME. O cliente ACME lida com isso.

nota

ACME-issued os certificados não podem ser revogados usando a API do ACM. RevokeCertificate Você deve revogar esses certificados por meio do endpoint ACME que os emitiu.

O exemplo a seguir mostra a revogação usando o Certbot:

certbot revoke \ --cert-path /etc/letsencrypt/live/www.example.com/cert.pem \ --server https://acm-acme-enroll.region.api.aws/00000000-0000-0000-0000-000000000000/directory

A revogação é autorizada pela função do IAM associada à vinculação da conta externa do cliente, portanto, as mesmas políticas e SCPs do IAM que se aplicam à acm:RevokeCertificate ação padrão se aplicam aqui. Para obter mais informações sobre a configuração de função do IAM necessária, consulteIAM para automação de certificados ACME.

Renovação de certificado

Os certificados ACME não são renovados pelo ACM. Seu cliente ACME é responsável por solicitar um novo certificado antes que o atual expire. A maioria dos clientes da ACME (incluindo o Certbot) oferece suporte à renovação automática por meio de tarefas agendadas (como tarefas cron ou cronômetros systemd).

Estabilidade do ARN em todas as renovações

Quando um cliente ACME renova um certificado, o ACM determina se a nova emissão é uma renovação de um certificado existente ou de um certificado distinto. Se a emissão vier da mesma conta ACME com os mesmos metadados de certificado (como nomes de domínio e algoritmo de chave), o ACM atualizará o ARN do certificado existente em vez de criar um novo. Isso mantém o ARN estável em todas as renovações, o que simplifica o rastreamento e a automação.

Se o certificado original tiver sido removido do ACM (por exemplo, porque expirou há mais de um ano e foi excluído automaticamente), uma emissão subsequente com os mesmos metadados criará um novo ARN do certificado.

Exemplo de renovação automática do Certbot (normalmente configurado automaticamente durante a instalação do Certbot):

certbot renew --quiet