Gerenciamento de certificados com o AWS Certificate Manager
O AWS Certificate Manager (ACM)
Autoridades de certificação aceitas
A mTLS de origem do CloudFront exige certificados de cliente com uso estendido de chave (EKU) para autenticação de cliente TLS. Devido a esse requisito, é necessário emitir certificados da autoridade de certificação e importá-los para o AWS Certificate Manager. Os recursos de provisionamento e renovação automáticos de certificados do ACM não estão disponíveis para certificados de cliente de mTLS da origem. A mTLS de origem do CloudFront atende a certificados de cliente de duas origens:
-
Autoridade de Certificação Privada da AWS: é possível emitir certificados da CA Privada da AWS usando modelos de certificado que incluem autenticação de cliente TLS no campo “Uso estendido de chave” (como o modelo EndEntityClientAuthCertificate). Depois de emitir o certificado da CA Privada da AWS, você deve importá-lo para o ACM na região Leste dos EUA (Norte da Virgínia) (us-east-1). Essa abordagem oferece os benefícios de segurança da CA Privada da AWS, bem como controle sobre o gerenciamento do ciclo de vida dos certificados.
-
Autoridades de certificação privadas de terceiros: também é possível emitir certificados de sua infraestrutura de autoridade de certificação privada existente e importá-los para o ACM. Isso permite manter seus processos atuais de gerenciamento de certificados e utilizar os recursos de mTLS da origem do CloudFront. Os certificados devem incluir a autenticação de cliente TLS no campo “Uso estendido de chave” e precisam estar no formato PEM, com o certificado, a chave privada e a cadeia de certificados.
Importante
Tanto para a CA Privada da AWS quanto para CAs de terceiros, você é responsável por monitorar as datas de expiração dos certificados e importar certificados renovados para o ACM antes da expiração. O recurso de renovação automática do ACM não se aplica a certificados importados usados para mTLS da origem.
Requisitos e especificações do certificado
Requisitos dos certificados de cliente
-
Formato: PEM (Privacy Enhanced Mail).
-
Componentes: certificado, chave privada e cadeia de certificados.
-
Profundidade máxima da cadeia de certificados: 3 (certificado de entidade final + certificado intermediário + certificado raiz).
-
Tamanho máximo da cadeia de certificados: 64 KB.
-
Tamanho do certificado: não pode ser superior a 96 KB.
-
Tamanho máximo da chave privada: 5 KB (restrição do ACM).
-
Máximo de ARNs exclusivos de certificados mTLS de origem que podem ser adicionados ou modificados por chamada de API de criação ou atualização da distribuição do CloudFront: 5.
-
Região: os certificados devem ser armazenados no ACM na região Leste dos EUA (Norte da Virgínia) (us-east-1).
Especificações de certificado permitidas
-
Tipo de certificado: X.509v3.
-
Algoritmos de chave pública:
RSA: 2.048 bits.
ECDSA: P-256.
-
Algoritmos de assinatura:
SHA256, SHA384, SHA512 com RSA
SHA256, SHA384, SHA512 com ECDSA.
SHA256, SHA384, SHA512 com RSASSA-PSS com MGF1
-
Uso estendido de chave (obrigatório): o certificado exige a extensão de Uso estendido de chave (EKU) definida como Autenticação de cliente TLS, garantindo que esteja autorizado para fins de mTLS.
Requisitos dos certificados de servidor
Os servidores de origem devem apresentar certificados de autoridades de certificação confiáveis publicamente durante o handshake de TLS mútua. Para ver detalhes sobre os requisitos dos certificados de servidor de origem, consulte Requisitos para usar certificados SSL/TLS com o CloudFront.
Solicitar ou importar um certificado
Para habilitar a mTLS de origem, é necessário ter um certificado de cliente disponível no ACM.
Solicitar e importar um certificado da CA Privada da AWS
Pré-requisitos:
Uma Autoridade de Certificação Privada da AWS configurada em sua conta.
Permissão para emitir certificados da CA Privada da AWS.
Permissão para importar certificados para o ACM.
Um ARN de modelo de certificado com
Extended key usage:TLS web client authenticationadequado ao seu caso de uso.Instalação do OpenSSL, da AWS CLI e do jq (para análise de JSON).
Como solicitar um certificado da CA privada e importar para o ACM (AWS CLI)
-
Defina o ARN da CA privada em uma variável para facilitar a reutilização.
PCA_ARN="arn:aws:acm-pca:region:account:certificate-authority/12345678..." -
Use o OpenSSL para gerar uma chave privada ECDSA P-256 (curva prime256v1) e uma Solicitação de assinatura de certificado (CSR), garantindo que o sinalizador -nodes seja usado para manter a chave privada sem criptografia, conforme exigido para a importação no ACM.
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -nodes \ -keyout private.key \ -out request.csr \ -subj "/CN=client.example.com" -
Envie a CSR à CA Privada da AWS para emitir um certificado e obter o ARN do certificado recém-emitido.
CERT_ARN=$(aws acm-pca issue-certificate \ --certificate-authority-arn "$PCA_ARN" \ --csr fileb://request.csr \ --signing-algorithm "SHA256WITHECDSA" \ --validity Value=365,Type="DAYS" \ --template-arn arn:aws:acm-pca:::template/EndEntityCertificate/V1 \ --query 'CertificateArn' --output text) -
Recupere o pacote de certificados da CA Privada da AWS usando o comando get-certificate, que exibe o certificado de entidade final e a cadeia, e use o jq para separá-los em arquivos distintos.
# Retrieve the full certificate bundle in JSON format aws acm-pca get-certificate \ --certificate-authority-arn "$PCA_ARN" \ --certificate-arn "$CERT_ARN" \ --output json > full_cert.json # Split into Leaf and Chain jq -r '.Certificate' full_cert.json > leaf_cert.pem jq -r '.CertificateChain' full_cert.json > cert_chain.pem -
Importe a chave privada não criptografada, o certificado de entidade final e a cadeia de certificados para o AWS Certicate Manager, usando o protocolo fileb:// para manipular corretamente os dados do arquivo binário na CLI.
aws acm import-certificate \ --certificate fileb://leaf_cert.pem \ --private-key fileb://private.key \ --certificate-chain fileb://cert_chain.pem \ --region us-east-1 \ --query 'CertificateArn' \ --output text
Importar um certificado de uma CA de terceiros
Pré-requisitos:
O certificado, a chave privada não criptografada e a cadeia de certificados da autoridade de certificação devem ser codificados em PEM.
O certificado deve incluir o uso estendido de chave para autenticação de cliente TLS.
Permissões para importar certificados no ACM.
Como importar um certificado para o ACM (AWS CLI).
aws acm import-certificate \ --certificate fileb://certificate.pem \ --private-key fileb://private-key.pem \ --certificate-chain fileb://certificate-chain.pem \ --region us-east-1 \ --query 'CertificateArn' \ --output text
Próximas etapas
Depois de obter ou importar o certificado de cliente no ACM, você pode configurar o servidor de origem para exigir a autenticação TLS mútua e habilitar a mTLS de origem na distribuição do CloudFront. Para ver instruções sobre como habilitar a mTLS de origem no CloudFront, consulte a próxima seção, “Habilitar a TLS mútua de origem para distribuições do CloudFront”.