Gerenciamento de certificados com o AWS Certificate Manager
O AWS Certificate Manager (ACM)
Autoridades de certificação aceitas
A TLS mútua (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 automáticos de provisionamento e renovação de certificados do ACM não estão disponíveis para certificados de cliente de TLS mútua (origem). A TLS mútua (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 que você mantenha seus processos atuais de gerenciamento de certificados e, ao mesmo tempo, utilize os recursos de TLS mútua (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 TLS mútua (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 requer a extensão de uso estendido da chave (EKU) definida como autenticação de cliente TLS, o que garante que ele seja 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
Antes de habilitar a TLS mútua (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), o que garante que o sinalizador -nodes seja usado para manter a chave privada não criptografada, conforme exigido para a importação do 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 TLS mútua (origem) na distribuição do CloudFront. Para ver instruções sobre como habilitar a TLS mútua (origem) no CloudFront, consulte a próxima seção, “Habilitar a TLS mútua (origem) para distribuições do CloudFront”.