

# Cabeçalhos mTLS de visualizador para políticas de cache e encaminhados à origem
<a name="viewer-mtls-headers"></a>

Ao usar a autenticação TLS mútua, o CloudFront pode extrair informações dos certificados de cliente e encaminhá-las às origens como cabeçalhos HTTP. Isso permite que os servidores de origem acessem detalhes do certificado sem implementar a respectiva lógica de validação.

Os seguintes cabeçalhos estão disponíveis para a criação de comportamentos de cache:


| Nome do cabeçalho | Descrição | Valor de exemplo | 
| --- | --- | --- | 
| CloudFront-Viewer-Cert-Serial-Number | Representação hexadecimal do número de série do certificado. | 4a:3f:5c:92:d1:e8:7b:6c | 
| CloudFront-Viewer-Cert-Issuer | Representação de string RFC2253 do nome distinto (DN) do emissor. | CN=rootcamtls.com,OU=rootCA,O=mTLS,L=Seattle,ST=Washington,C=US | 
| CloudFront-Viewer-Cert-Subject | Representação de string RFC2253 do nome distinto (DN) do assunto. | CN=client\$1.com,OU=client-3,O=mTLS,ST=Washington,C=US | 
| CloudFront-Viewer-Cert-Present | Pode ser 1 (presente) ou 0 (não presente) para indicar se o certificado está ou não presente. Esse valor é sempre 1 no modo Obrigatório. | 1 | 
| CloudFront-Viewer-Cert-Sha256 | O hash SHA256 do certificado de cliente. | 01fbf94fef5569753420c349f49adbfd80af5275377816e3ab1fb371b29cb586 | 

Para solicitações à origem, além dos cabeçalhos acima disponíveis para comportamentos de cache dois cabeçalhos adicionais são fornecidos: Devido ao tamanho potencial do cabeçalho, o cabeçalho CloudFront-Viewer-Cert-Pem não é exposto a funções de borda (Lambda@Edge ou CloudFront Functions) e é apenas encaminhado para a origem.


| Nome do cabeçalho | Descrição | Valor de exemplo | 
| --- | --- | --- | 
| CloudFront-Viewer-Cert-Validity | Formato ISO8601 da data notBefore e notAfter. | CloudFront-Viewer-Cert-Validity: NotBefore=2023-09-21T01:50:17Z;NotAfter=2024-09-20T01:50:17Z | 
| CloudFront-Viewer-Cert-Pem | Formato PEM codificado em URL do certificado de entidade final. | CloudFront-Viewer-Cert-Pem: -----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A | 

## Configurar o encaminhamento de cabeçalhos
<a name="configure-header-forwarding"></a>

### Console
<a name="configure-headers-console"></a>

No modo de verificação, o CloudFront adiciona automaticamente os cabeçalhos CloudFront-Viewer-Cert-\$1 a todas as solicitações de visualizador. Para encaminhar todos os cabeçalhos à origem:

1. Na página principal “Listar distribuições”, selecione a distribuição com mTLS de visualizador habilitada e acesse a guia **Comportamentos**.

1. Selecione o comportamento de cache e escolha **Editar**.

1. Na seção **Política de solicitação à origem**, escolha **Criar política** ou selecione uma política existente

1. Os seguintes cabeçalhos devem estar incluídos na política de solicitação à origem:
   + CloudFront-Viewer-Cert-Serial-Number
   + CloudFront-Viewer-Cert-Issuer
   + CloudFront-Viewer-Cert-Subject
   + CloudFront-Viewer-Cert-Present
   + CloudFront-Viewer-Cert-Sha256
   + CloudFront-Viewer-Cert-Validity
   + CloudFront-Viewer-Cert-Pem

1. Escolha **Criar** (para novas políticas) ou **Salvar alterações** (para políticas existentes).

1. Selecione a política em seu comportamento de cache e salve as alterações.

### Usar a AWS CLI
<a name="configure-headers-cli"></a>

O seguinte exemplo mostra como criar uma política de solicitação à origem que inclua cabeçalhos mTLS para o modo de verificação:

```
aws cloudfront create-origin-request-policy \
  --origin-request-policy-config '{
    "Name": "MTLSHeadersPolicy",
    "HeadersConfig": {
      "HeaderBehavior": "whitelist",
      "Headers": {
        "Quantity": 5,
        "Items": [
          "CloudFront-Viewer-Cert-Serial-Number",
          "CloudFront-Viewer-Cert-Issuer",
          "CloudFront-Viewer-Cert-Subject",
          "CloudFront-Viewer-Cert-Validity",
          "CloudFront-Viewer-Cert-Pem"
        ]
      }
    },
    "CookiesConfig": {
      "CookieBehavior": "none"
    },
    "QueryStringsConfig": {
      "QueryStringBehavior": "none"
    }
  }'
```

## Considerações sobre processamento de cabeçalhos
<a name="header-processing-considerations"></a>

Ao trabalhar com cabeçalhos de certificados, considere estas práticas recomendadas:
+ **Validação do cabeçalho:** verifique os valores do cabeçalho do certificado em sua origem como uma medida de segurança adicional.
+ **Limites de tamanho do cabeçalho:** como os cabeçalhos de certificado PEM podem ser grandes, confirme se seu servidor de origem consegue processá-los.
+ **Considerações sobre cache:** o uso de cabeçalhos de certificado na chave de cache aumenta a fragmentação do cache.
+ **Solicitações entre origens:** se sua aplicação usar CORS, talvez seja necessário configurá-la para permitir os cabeçalhos do certificado.

## Próximas etapas
<a name="headers-next-steps"></a>

Depois de configurar o encaminhamento de cabeçalhos, você pode implementar a verificação de revogação de certificados usando funções de conexão e o KeyValueStore do CloudFront. Para ver detalhes sobre a implementação de verificações de revogação, consulte [Revogação usando a função de conexão e o KVS do CloudFront](revocation-connection-function-kvs.md).