

# Habilitar a TLS mútua para distribuições do CloudFront
<a name="enable-mtls-distributions"></a>

## Pré-requisitos e requisitos
<a name="mtls-prerequisites-requirements"></a>

O modo de verificação mútua de TLS do CloudFront exige que todos os clientes apresentem certificados válidos durante o handshake do TLS e rejeita conexões sem certificados válidos. Antes de habilitar a TLS mútua em uma distribuição do CloudFront, você deve:
+ Criar um armazenamento confiável com certificados de sua autoridade de certificação.
+ Associar o ID do armazenamento confiável à distribuição do CloudFront.
+ Garantir que todos os comportamentos de cache da distribuição usem uma política de protocolo de visualizador somente HTTPS.
+ Verificar se sua distribuição está usando HTTP/2, que é a configuração padrão (não é possível usar HTTP/3 com mTLS de visualizador).

**nota**  
A autenticação TLS mútua requer conexões HTTPS entre visualizadores e o CloudFront. Não é possível habilitar a mTLS em uma distribuição com qualquer comportamento de cache que permita conexões HTTP.

## Habilitar a TLS mútua (console)
<a name="enable-mtls-console"></a>

### Para novas distribuições
<a name="enable-mtls-new-distributions"></a>

Não é possível configurar a mTLS de visualizador no processo de criação de uma distribuição no console do CloudFront. Primeiro, crie a distribuição usando qualquer meio (console, CLI e API) e, em seguida, edite as configurações da distribuição para habilitar a mTLS de visualizador de acordo com as instruções de distribuição abaixo.

### Para distribuições existentes
<a name="enable-mtls-existing-distributions"></a>

1. Faça login no Console de gerenciamento da AWS e abra o console do CloudFront em [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Na lista de distribuição, selecione a distribuição a ser modificada.

1. A política de protocolo de visualizador deve estar definida como **Redirecionar HTTP para HTTPS** ou **Somente HTTPS** para todos os comportamentos de cache. (É possível escolher a guia **Comportamentos de cache** para visualizar e atualizar qualquer comportamento de cache com políticas de protocolo HTTP.)

1. Escolha a guia **Geral**.

1. Na seção **Configurações**, escolha **Editar**.

1. Na seção **Conectividade**, encontre **Autenticação mútua (mTLS) de visualizador**.

1. Ative a opção **Habilitar autenticação mútua**.

1. Em **Modo de validação de certificado de cliente**, selecione **Obrigatório** (todos os clientes devem apresentar certificados) ou **Opcional** (os clientes podem apresentar certificados opcionalmente).

1. Em **Armazenamento confiável**, selecione o armazenamento confiável criado anteriormente.

1. (Opcional) Ative a opção **Anunciar nomes de CA do armazenamento confiável** se quiser que o CloudFront envie nomes de CA aos clientes durante o handshake do TLS.

1. (Opcional) Ative a opção **Ignorar a data de expiração do certificado** se quiser permitir conexões com certificados expirados.

1. Escolha **Salvar alterações**.

## Habilitar a TLS mútua (AWS CLI)
<a name="enable-mtls-cli"></a>

### Para novas distribuições
<a name="enable-mtls-cli-new"></a>

O seguinte exemplo mostra como criar um arquivo de configuração de distribuição (distribution-config.json) que inclua configurações de mTLS:

```
{
  "CallerReference": "cli-example-1",
  "Origins": {
    "Quantity": 1,
    "Items": [
      {
        "Id": "my-origin",
        "DomainName": "example.com",
        "CustomOriginConfig": {
          "HTTPPort": 80,
          "HTTPSPort": 443,
          "OriginProtocolPolicy": "https-only"
        }
      }
    ]
  },
  "DefaultCacheBehavior": {
    "TargetOriginId": "my-origin",
    "ViewerProtocolPolicy": "https-only",
    "MinTTL": 0,
    "ForwardedValues": {
      "QueryString": false,
      "Cookies": {
        "Forward": "none"
      }
    }
  },
  "ViewerCertificate": {
    "CloudFrontDefaultCertificate": true
  },
  "ViewerMtlsConfig": {
    "Mode": "required", 
    "TrustStoreConfig": {
        "TrustStoreId": {TRUST_STORE_ID},
        "AdvertiseTrustStoreCaNames": true,
        "IgnoreCertificateExpiry": true
    }
  },
  "Enabled": true
}
```

Crie a distribuição com a mTLS habilitada usando o seguinte exemplo de comando:

```
aws cloudfront create-distribution --distribution-config file://distribution-config.json
```

### Para distribuições existentes
<a name="enable-mtls-cli-existing"></a>

Obtenha a configuração de distribuição atual usando o seguinte comando de exemplo:

```
aws cloudfront get-distribution-config --id E1A2B3C4D5E6F7 --output json > dist-config.json
```

Edite o arquivo para adicionar configurações de mTLS. Adicione a seguinte seção de exemplo à configuração da distribuição:

```
"ViewerMtlsConfig": {
    "Mode": "required", 
    "TrustStoreConfig": {
        "TrustStoreId": {TRUST_STORE_ID},
        "AdvertiseTrustStoreCaNames": true,
        "IgnoreCertificateExpiry": true
    }
}
```

Remova o campo ETag do arquivo, mas salve o respectivo valor separadamente.

Obtenha a configuração com a nova configuração usando o seguinte comando de exemplo:

```
aws cloudfront update-distribution \
    --id E1A2B3C4D5E6F7 \
    --if-match YOUR-ETAG-VALUE \
    --distribution-config file://dist-config.json
```

## Políticas de protocolo de visualizador
<a name="viewer-protocol-policies"></a>

Ao usar a TLS mútua, todos os comportamentos de cache da distribuição devem ser configurados com uma política de protocolo de visualização somente HTTPS:
+ **Redirecionar HTTP para HTTPS**: redireciona solicitações HTTP para HTTPS antes de realizar a validação do certificado.
+ **Somente HTTPS**: aceita somente solicitações HTTPS e executa a validação do certificado.

**nota**  
Não é possível usar a política de protocolo de visualizador HTTP e HTTPS com TLS mútua, pois as conexões HTTP não podem realizar a validação do certificado.

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

Depois de habilitar o TLS de visualizador em uma distribuição do CloudFront, é possível associar as funções de conexão para implementar uma lógica personalizada de validação de certificados. As funções de conexão permitem estender os recursos integrados de autenticação mTLS com regras de validação personalizadas, verificação de revogação de certificados e registro em log. Para ver detalhes sobre como criar e associar funções de conexão, consulte [Associar uma função de conexão do CloudFront](connection-functions.md).