Autenticação mútua com TLS no Application Load Balancer - Elastic Load Balancing

Autenticação mútua com TLS no Application Load Balancer

A autenticação mútua com TLS é uma variação do Transport Layer Security (TLS). O TLS tradicional estabelece comunicações seguras entre um servidor e um cliente, nas quais o servidor precisa fornecer sua identidade aos clientes. Com o TLS mútuo, um balanceador de carga negocia a autenticação mútua entre o cliente e o servidor enquanto negocia o TLS. Ao usar o TLS mútuo com o Application Load Balancer, você simplifica o gerenciamento da autenticação e reduz a carga nas aplicações.

Ao usar o TLS mútuo com o Application Load Balancer, o balanceador de carga pode gerenciar a autenticação do cliente para ajudar a garantir que somente clientes confiáveis se comuniquem com suas aplicações de backend. Ao usar esse recurso, o Application Load Balancer autentica clientes com certificados de uma autoridade de certificação (CA) terceira ou usando a AWS Private Certificate Authority (PCA), opcionalmente, com verificações de revogação. O Application Load Balancer transmite informações de certificado do cliente para o backend, que suas aplicações podem usar para autorização. Ao usar o TLS mútuo no Application Load Balancer, você pode obter autenticação integrada, escalável e gerenciada para entidades baseadas em certificados, que usam bibliotecas estabelecidas.

O TLS mútuo para Application Load Balancers fornece as seguintes duas opções para validar seus certificados de cliente X.509v3:

Observação: não há suporte para certificados de cliente X.509v1.

  • Passagem de TLS mútuo: ao usar o modo de passagem de TLS mútuo, o Application Load Balancer envia toda a cadeia de certificados do cliente para o destino usando cabeçalhos HTTP. Em seguida, usando a cadeia de certificados do cliente, você pode implementar a autenticação do balanceador de carga correspondente e a lógica de autorização de destino na aplicação.

  • Verificação de TLS mútuo: ao usar o modo de verificação de TLS mútuo, o Application Load Balancer executa a autenticação de certificado de cliente X.509 para clientes quando um balanceador de carga negocia conexões TLS.

Para começar a usar o TLS mútuo no Application Load Balancer com a passagem, você só precisa configurar o receptor para aceitar qualquer certificado dos clientes. Para usar o TLS mútuo com a verificação, faça o seguinte:

  • Crie um recurso de armazenamento confiável.

  • Faça upload do seu pacote de autoridade de certificação (CA) e, opcionalmente, das listas de revogação.

  • Anexe o armazenamento confiável ao receptor que está configurado para verificar os certificados do cliente.

Para obter procedimentos passo a passo sobre como configurar o modo de verificação de TLS mútuo com o Application Load Balancer, consulte Configuração de um TLS mútuo em um Application Load Balancer.

Antes de começar a configurar o TLS mútuo no Application Load Balancer

Antes de começar a configurar o TLS mútuo no Application Load Balancer, esteja ciente do seguinte:

Cotas

Os Application Load Balancers incluem certos limites relacionados à quantidade de armazenamentos confiáveis, certificados de CA e listas de revogação de certificados em uso na conta da AWS.

Para obter mais informações, consulte Quotas for your Application Load Balancers.

Requisitos de certificados

Os Application Load Balancers são compatíveis com os seguintes recursos para certificados usados com a autenticação de TLS mútuo:

  • Certificado compatível: X.509v3

  • Chaves públicas com suporte: RSA 2K a 8K ou ECDSA secp256r1, secp384r1, secp521r1

  • Algoritmos de assinatura com suporte: SHA256, 384, 512 com RSA e SHA256, 384, 512 com EC e SHA256, 384, hash 512 com RSASSA-PSS com MGF1

Pacotes de certificados de CA

O seguinte se aplica aos pacotes de autoridade de certificação (CA):

  • Os Application Load Balancers fazem o upload de cada pacote de certificados de autoridade de certificação (CA) em lote. Os Application Load Balancers não oferecem suporte ao upload de certificados individuais. Se precisar adicionar novos certificados, você deverá fazer upload do arquivo do pacote de certificados.

  • Para substituir um pacote de certificados de CA, use a API ModifyTrustStore.

Pedido de certificado para passagem

Ao usar a passagem de TLS mútuo, o Application Load Balancer insere cabeçalhos para apresentar a cadeia de certificados do cliente aos destinos de backend. A ordem de apresentação começa com os certificados folha e termina com o certificado raiz.

Retomada da sessão

Não há suporte para a retomada da sessão ao usar os modos de passagem ou de verificação de TLS mútuo com um Application Load Balancer.

Cabeçalhos HTTP

Os Application Load Balancers usam cabeçalhos X-Amzn-Mtls para enviar informações do certificado quando negociam conexões de clientes usando TLS mútuo. Para obter mais informações e exemplos de cabeçalhos, consulte Cabeçalhos HTTP e TLS mútuo.

Arquivos de certificado de CA

Os arquivos de certificado de CA devem atender aos seguintes requisitos:

  • O arquivo do certificado deve usar o formato PEM (Privacy Enhanced Mail).

  • O conteúdo do certificado deve estar dentro dos limites -----BEGIN CERTIFICATE----- e -----END CERTIFICATE-----.

  • Os comentários devem ser precedidos por um caractere # e não devem conter nenhum caractere -.

  • Não pode haver linhas em branco.

Exemplo de certificado que não é aceito (inválido):

# comments Certificate: Data: Version: 3 (0x2) Serial Number: 01 Signature Algorithm: ecdsa-with-SHA384 Issuer: C=US, O=EXAMPLE, OU=EXAMPLE, CN=EXAMPLE Validity Not Before: Jan 11 23:57:57 2024 GMT Not After : Jan 10 00:57:57 2029 GMT Subject: C=US, O=EXAMPLE, OU=EXAMPLE, CN=EXAMPLE Subject Public Key Info: Public Key Algorithm: id-ecPublicKey Public-Key: (384 bit) pub: 00:01:02:03:04:05:06:07:08 ASN1 OID: secp384r1 NIST CURVE: P-384 X509v3 extensions: X509v3 Key Usage: critical Digital Signature, Key Encipherment, Certificate Sign, CRL Sign X509v3 Basic Constraints: critical CA:TRUE X509v3 Subject Key Identifier: 00:01:02:03:04:05:06:07:08 X509v3 Subject Alternative Name: URI:EXAMPLE.COM Signature Algorithm: ecdsa-with-SHA384 00:01:02:03:04:05:06:07:08 -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----

Exemplos de certificados que são aceitos (válidos):

  1. Certificado único (codificado por PEM):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----
  2. Vários certificados (codificados por PEM):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----

Cabeçalhos HTTP e TLS mútuo

Esta seção descreve os cabeçalhos HTTP que os Application Load Balancers usam para enviar informações de certificado ao negociar conexões com clientes usando TLS mútuo. Os cabeçalhos X-Amzn-Mtls específicos usados pelo Application Load Balancer dependem do modo TLS mútuo especificado: modo de passagem ou modo de verificação.

Para obter informações sobre outros cabeçalhos HTTP compatíveis com os Application Load Balancers, consulte Cabeçalhos HTTP e Application Load Balancers.

Cabeçalho HTTP para o modo de passagem

Para TLS mútuo no modo de passagem, os Application Load Balancers usam o cabeçalho a seguir.

Esse cabeçalho contém o formato PEM codificado por URL de toda a cadeia de certificados do cliente apresentada na conexão, tendo +=/ como caracteres seguros.

Exemplo de conteúdo do cabeçalho:

X-Amzn-Mtls-Clientcert: -----BEGIN%20CERTIFICATE-----%0AMIID<...reduced...>do0g%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIID1<...reduced...>3eZlyKA%3D%3D%0A-----END%20CERTIFICATE-----%0A

Cabeçalhos HTTP para o modo de verificação

Para TLS mútuo no modo de verificação, os Application Load Balancers usam os cabeçalhos a seguir.

Esse cabeçalho contém uma representação hexadecimal do número de série do certificado folha.

Exemplo de conteúdo do cabeçalho:

X-Amzn-Mtls-Clientcert-Serial-Number: 03A5B1

Esse cabeçalho contém uma representação de string RFC2253 do nome distinto (DN) do emissor.

Exemplo de conteúdo do cabeçalho:

X-Amzn-Mtls-Clientcert-Issuer: CN=rootcamtls.com,OU=rootCA,O=mTLS,L=Seattle,ST=Washington,C=US

Esse cabeçalho contém uma representação de string RFC2253 do nome distinto (DN) do assunto.

Exemplo de conteúdo do cabeçalho:

X-Amzn-Mtls-Clientcert-Subject: CN=client_.com,OU=client-3,O=mTLS,ST=Washington,C=US

Esse cabeçalho contém um formato ISO8601 das datas de notBefore e notAfter.

Exemplo de conteúdo do cabeçalho:

X-Amzn-Mtls-Clientcert-Validity: NotBefore=2023-09-21T01:50:17Z;NotAfter=2024-09-20T01:50:17Z

Esse cabeçalho contém um formato PEM codificado por URL do certificado folha, tendo +=/ como caracteres seguros.

Exemplo de conteúdo do cabeçalho:

X-Amzn-Mtls-Clientcert-Leaf: -----BEGIN%20CERTIFICATE-----%0AMIIG<...reduced...>NmrUlw%0A-----END%20CERTIFICATE-----%0A

Logs de conexão para Application Load Balancers

O Elastic Load Balancing fornece logs de conexão que capturam atributos sobre as solicitações enviadas aos Application Load Balancers. Os logs de conexão contêm informações como o endereço IP e a porta do cliente, informações sobre o certificado do cliente, resultados da conexão e cifras TLS que estão sendo usadas. Esses logs de conexão podem então ser usados para revisar padrões de solicitação e outras tendências.

Para saber mais sobre os logs de conexão, consulte Logs de conexão para o Application Load Balancer