Modos adicionais de validação
O modo obrigatório é o padrão para o TLS mútuo do CloudFront — o CloudFront valida cada certificado de cliente e nega conexões que falham. No entanto, para oferecer suporte a casos de uso adicionais, como aplicativos que atendem a uma combinação de clientes autenticados e não autenticados pelo mTLS ou ambientes em que o servidor de origem realiza sua própria validação do mTLS, o CloudFront oferece suporte a dois modos adicionais.
O modo opcional foi projetado para aplicativos com populações mistas de clientes. Por exemplo, um portal que fornece conteúdo público para navegadores não autenticados enquanto restringe os endpoints da API aos clientes que apresentam certificados válidos. Ou um cenário de migração em que você gradualmente integra clientes ao mTLS e precisa permitir conexões autenticadas e não autenticadas durante a transição.
O modo de passagem foi projetado para clientes cujos servidores de origem já realizam a validação do mTLS. Por exemplo, serviços migrando de proxies reversos on-premise, outras CDNs ou Application Load Balancers que já lidam com a verificação de certificados. O modo de passagem permite que esses clientes coloquem o CloudFront na frente de seus aplicativos sem reimplementar a lógica de validação na borda.
Modo opcional
Modo opcional de validação de certificados de cliente
O CloudFront oferece um modo opcional de validação de certificados de cliente que valida os certificados de cliente que são apresentados, mas permite o acesso aos clientes que não apresentam certificados.
Comportamento do modo opcional
-
Concede conexão a clientes com certificados válidos (certificados inválidos são negados).
-
Permite a conexão com clientes sem certificados.
-
Permite cenários variados de autenticação de clientes por meio de uma única distribuição.
O modo opcional é ideal em migrações graduais para a autenticação mTLS, pois permite clientes com certificados e clientes sem certificados ou mantém a compatibilidade com versões anteriores de clientes legados.
nota
No modo opcional, as funções de conexão são invocadas mesmo quando os clientes não apresentam certificados. Isso permite que você implemente uma lógica personalizada, como registrar em log o endereço IP dos clientes ou aplicar políticas diferentes com base na apresentação ou não de certificados.
Como configurar o modo opcional (console)
-
Nas configurações de distribuição, acesse a guia Geral e escolha Editar.
-
Role até a seção Autenticação mútua (mTLS) de visualizador no contêiner Conectividade.
-
Em Modo de validação de certificados de cliente, selecione Opcional.
-
Salve as alterações.
Como configurar o modo opcional (AWS CLI)
O seguinte exemplo mostra como configurar um o modo opcional:
"ViewerMtlsConfig": { "Mode": "optional", ...other settings }
Personalizar cabeçalhos de certificados
Use as funções auxiliares do mTLS no CloudFront Functions solicitado pelo visualizador para renomear, reformatar ou combinar os cabeçalhos do certificado antes que eles cheguem à sua origem. Isso é útil ao migrar de outros serviços que usam nomes de cabeçalho ou formatos de codificação de certificado diferentes.
Modo de passagem
O modo de passagem permite que clientes com implementações de mTLS existentes em suas origens usem o CloudFront. O CloudFront encerra a conexão TLS e encaminha o certificado do cliente para sua origem como cabeçalhos HTTP. Sua origem realiza toda a validação do certificado, incluindo verificação em cadeia, verificação de revogação e aplicação de políticas personalizadas.
Como o modo de passagem funciona
-
O cliente se conecta ao CloudFront e apresenta um certificado de cliente durante o handshake TLS.
-
O CloudFront conclui o handshake TLS sem validar o certificado em um armazenamento confiável.
-
O CloudFront adiciona o certificado do cliente e a cadeia de certificados como cabeçalhos HTTP na solicitação.
-
A solicitação é encaminhada para a sua origem. Nenhum conteúdo é armazenado em cache.
-
Sua origem valida o certificado e processa a solicitação.
Os clientes também podem se conectar sem apresentar um certificado. Sua origem ou função de conexão lida com cenários de certificados vazios.
nota
No modo de passagem, as funções de conexão são invocadas mesmo quando os clientes não apresentam certificados. Isso permite que você implemente uma lógica personalizada, como registrar em log o endereço IP dos clientes ou aplicar políticas diferentes com base na apresentação ou não de certificados.
Requisitos de configuração
-
Armazenamento de confiança zero — A distribuição deve ter armazenamentos de confiança zero.
-
Armazenamento em cache desativado — Todos os comportamentos de cache devem usar a política
CachingDisabledde cache gerenciado. -
Proibido o Origin Shield — O Origin Shield não pode ser ativado.
-
Proibido o Lambda@Edge — associações de funções do Lambda@Edge não são permitidas.
-
Política de solicitação de origem obrigatória — Você deve permitir os cabeçalhos
Client-CerteClient-Cert-Chainem sua política de solicitação de origem sejam permitidos para que a origem os receba. -
Profundidade da cadeia de certificados — O CloudFront permite uma profundidade máxima de 4 para que a cadeia de certificados do cliente seja encaminhada às origens.
Habilitar o modo de passagem
Console
-
Atualize todos os comportamentos de cache para usar a política gerenciada de cache
CachingDisabled. -
Abra o console do CloudFront e escolha sua distribuição.
-
Escolha a aba Geral, depois escolha Editar em Configurações.
-
Em Autenticação mútua do Viewer (mTLS), selecione Passagem.
-
Escolha Salvar alterações.
AWS CLI
Certifique-se de que todos os comportamentos de cache façam referência à política gerenciada CachingDisabled e, em seguida, atualize a configuração de distribuição:
{ "ViewerMtlsConfig": { "Mode": "passthrough" } }
Cabeçalhos encaminhados para a origem
O CloudFront adiciona os seguintes cabeçalhos à solicitação enviada à sua origem:
-
Client-Cert— O certificado da entidade final (folha) apresentado pelo cliente, codificado em base64. -
Client-Cert-Chain— A cadeia de certificados (excluindo o folha), como uma lista de campos estruturada. O conteúdo apresentado é codificado por base64.Client-Cert-Chainé um cabeçalho do tipo Lista. Ele pode aparecer várias vezes em uma solicitação. A concatenação de todos os valores preserva a ordem original da cadeia.Client-Cert-Chainé omitido quando o cliente apresenta apenas um único certificado.
O CloudFront elimina qualquer cabeçalho entrante Client-Cert ou Client-Cert-Chain da solicitação do cliente antes de adicionar os dados reais do certificado. Isso evita a falsificação do cabeçalho.
Personalizar cabeçalhos de certificados
Use as funções auxiliares do mTLS no CloudFront Functions solicitado pelo visualizador para renomear, reformatar ou combinar os cabeçalhos do certificado antes que eles cheguem à sua origem. Isso é útil ao migrar de outros serviços que usam nomes de cabeçalho ou formatos de codificação de certificado diferentes.