

# Gerenciamento de certificados com o AWS Certificate Manager
<a name="origin-certificate-management-certificate-manager"></a>

O [AWS Certificate Manager (ACM)](https://aws.amazon.com/certificate-manager/) armazena os certificados de cliente que o CloudFront apresenta aos servidores de origem durante a autenticação TLS mútua de origem.

## Autoridades de certificação aceitas
<a name="origin-ca-support"></a>

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 automáticos de provisionamento e renovação de certificados do ACM não estão disponíveis para certificados de cliente de mTLS de 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 que você mantenha seus processos atuais de gerenciamento de certificados e, ao mesmo tempo, utilize os recursos de mTLS de 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 de origem.

## Requisitos e especificações do certificado
<a name="origin-certificate-requirements"></a>

### Requisitos dos certificados de cliente
<a name="origin-ca-cert-format-requirements"></a>
+ **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
<a name="origin-supported-cert-specs"></a>
+ **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
<a name="origin-server-certificate-requirements"></a>

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](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-cloudfront-to-custom-origin.html#using-https-cloudfront-to-origin-certificate).

### Solicitar ou importar um certificado
<a name="origin-request-import-certificate"></a>

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
<a name="request-certificate-aws-private-ca"></a>

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](https://docs.aws.amazon.com/privateca/latest/userguide/UsingTemplates.html) com `Extended key usage:TLS web client authentication` adequado 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)
<a name="request-certificate-cli"></a>

1. 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..."
   ```

1. 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"
   ```

1. 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)
   ```

1. 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
   ```

1. 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
<a name="import-certificate-third-party-ca"></a>

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).
<a name="import-certificate-cli"></a>

```
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
<a name="certificate-next-steps"></a>

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”.