Autenticación mutua con TLS en Equilibrador de carga de aplicación - Elastic Load Balancing

Autenticación mutua con TLS en Equilibrador de carga de aplicación

La autenticación TLS mutua es una variación de la seguridad de la capa de transporte (TLS). La TLS tradicional establece comunicaciones seguras entre un servidor y un cliente, donde el servidor debe proporcionar su identidad a sus clientes. Con la TLS mutua, un equilibrador de carga negocia la autenticación mutua entre el cliente y el servidor mientras negocia TLS. Cuando utiliza TLS mutuo con el equilibrador de carga de aplicaciones, simplifica la administración de autenticación y reduce la carga en las aplicaciones.

Al usar TLS mutuo, el equilibrador de carga puede administrar la autenticación de clientes para ayudar a garantizar que solo clientes de confianza se comuniquen con las aplicaciones de backend. Cuando utiliza esta característica, el equilibrador de carga autentica a los clientes mediante certificados de una autoridad de certificación (CA) de terceros o mediante AWS Private Certificate Authority (autoridad de certificación privada), opcionalmente con comprobaciones de revocación. El equilibrador de carga pasa la información del certificado del cliente al backend con encabezados HTTP, que las aplicaciones pueden usar para la autorización.

TLS mutuo para equilibradores de carga de aplicaciones proporciona las siguientes opciones para validar certificados X.509v3 del cliente:

  • Modo de paso directo de TLS mutuo: el equilibrador de carga envía toda la cadena de certificados del cliente al destino sin verificarla. Los destinos deben verificar la cadena de certificados del cliente. Luego, con la cadena de certificados del cliente, puede implementar en la aplicación la autenticación que realiza el equilibrador de carga y la lógica de autorización del destino.

  • Verificación de TLS mutuo: el equilibrador de carga realiza la autenticación del certificado X.509 del cliente para los clientes cuando un equilibrador de carga negocia conexiones TLS.

Para usar TLS mutuo en modo de paso directo, debe configurar el oyente para aceptar los certificados de los clientes. Para usar TLS mutuo con verificación, consulte Configuración de una TLS mutua en un Equilibrador de carga de aplicación.

Pasos previos a la configuración de la TLS mutua en el Equilibrador de carga de aplicación

Antes de empezar a configurar la TLS mutua en el Equilibrador de carga de aplicación, tenga en cuenta lo siguiente:

Cuotas

Los Equilibradores de carga de aplicación incluyen ciertos límites relacionados con la cantidad de almacenes de confianza, certificados de CA y listas de revocación de certificados que se utilizan en su cuenta de AWS.

Para obtener más información, consulte Cuotas para sus Equilibradores de carga de aplicación.

Requisitos para certificados

Los Equilibradores de carga de aplicación son compatibles con los siguientes elementos para los certificados que se utilizan con la autenticación TLS mutua:

  • Certificado compatible: X.509v3

  • Claves públicas compatibles: RSA 2K — 8K o ECDSA secp256r1, secp384r1, secp521r1

  • Algoritmos de firma compatibles: SHA256, 384, 512 con RSA/SHA256, 384, 512 con EC/SHA256.384.512 hash con RSASSA-PSS con MGF1

Agrupaciones de certificados de CA

La siguiente información se aplica a los paquetes de entidades de certificación (CA):

  • Los Equilibradores de carga de aplicación cargan cada paquete de certificados de la entidad de certificación (CA) en un lote. Los Equilibradores de carga de aplicación no admiten la carga de certificados individuales. Si necesita agregar nuevos certificados, debe cargar el archivo del paquete de certificados.

  • Para reemplazar un paquete de certificados de CA, utilice la API ModifyTrustStore.

Solicitud de certificado para acceso directo

Cuando se utiliza el acceso directo de TLS mutua, el Equilibrador de carga de aplicación inserta encabezados para presentar la cadena de certificados del cliente a los destinos del backend. El orden de presentación comienza con los certificados de hoja y termina con el certificado raíz.

Reanudación de la sesión

No se admite la reanudación de la sesión cuando se utilizan los modos de verificación o los accesos directos de TLS mutua con un Equilibrador de carga de aplicación.

Encabezados HTTP

Los Equilibradores de carga de aplicación utilizan encabezados X-Amzn-Mtls para enviar la información del certificado cuando negocian las conexiones de los clientes mediante una TLS mutua. Para obtener más información y ejemplos, consulte Encabezados HTTP y TLS mutua.

Archivos de certificados de CA

Tenga en cuenta que los certificados de CA deben satisfacer los siguientes requisitos:

  • El archivo de certificado debe usar el formato PEM (Privacy Enhanced Mail).

  • El contenido del certificado debe estar dentro de los límites -----BEGIN CERTIFICATE----- y -----END CERTIFICATE-----.

  • Los comentarios deben ir precedidos de un carácter # y no deben contener ningún carácter -.

  • No puede haber líneas en blanco.

Ejemplo de un certificado que no se acepta (no vá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-----

Ejemplos de certificados que se aceptan (válidos):

  1. Certificado único (codificado en PEM):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----
  2. Varios certificados (codificados en PEM):

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

Encabezados HTTP y TLS mutua

En esta sección, se describen los encabezados HTTP que los Equilibradores de carga de aplicación utilizan para enviar la información de los certificados cuando negocian conexiones con clientes que utilizan una TLS mutua. Los encabezados X-Amzn-Mtls específicos que utiliza el Equilibrador de carga de aplicación dependen del modo de TLS mutua que haya especificado: modo de acceso directo o modo de verificación.

Para obtener información sobre otros encabezados HTTP compatibles con los Equilibradores de carga de aplicación, consulte Encabezados HTTP y balanceadores de tipo equilibrador de carga de aplicaciones.

Encabezado de HTTP para el modo de acceso directo

Para la TLS mutua en modo de acceso directo, los Equilibradores de carga de aplicación utilizan el siguiente encabezado.

Este encabezado contiene el formato PEM codificado en una URL de toda la cadena de certificados de cliente presentada en la conexión, con los caracteres seguros +=/.

Ejemplo de contenido del encabezado:

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

Encabezados de HTTP para el modo de verificación

Para la TLS mutua en modo de verificación, los Equilibradores de carga de aplicación utilizan los siguientes encabezados.

Este encabezado contiene una representación hexadecimal del número de serie del certificado de hoja.

Ejemplo de contenido del encabezado:

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

Este encabezado contiene una cadena RFC2253 que representa el nombre distintivo (DN) del emisor.

Ejemplo de contenido del encabezado:

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

Este encabezado contiene una cadena RFC2253 que representa el nombre distintivo (DN) del asunto.

Ejemplo de contenido del encabezado:

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

Este encabezado contiene un formato ISO8601 de la fecha notBefore y notAfter.

Ejemplo de contenido del encabezado:

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

Este encabezado contiene un formato PEM codificado en una dirección URL del certificado de hoja, con los caracteres seguros +=/.

Ejemplo de contenido del encabezado:

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

Anunciar los nombres del asunto de la autoridad de certificación (CA) mejora el proceso de autenticación al ayudar a los clientes a determinar qué certificados serán aceptados durante la autenticación TLS mutua.

Cuando habilita Anuncio del nombre del asunto de la CA, el equilibrador de carga de aplicaciones anunciará la lista de nombres del asunto de las autoridades de certificación (CA) en las que confía, en función del almacén de confianza con el que está asociado. Cuando un cliente se conecta a un destino a través del equilibrador de carga de aplicaciones, el cliente recibe la lista de nombres del asunto de las CA de confianza.

Durante el establecimiento de comunicación TLS, cuando el equilibrador de carga de aplicaciones solicita un certificado del cliente, incluye una lista de nombres distintivos (DN) de CA de confianza en el mensaje de solicitud de certificado. Esto ayuda a los clientes a seleccionar certificados válidos que coincidan con los nombres del asunto de las CA anunciadas, lo que optimiza el proceso de autenticación y reduce los errores de conexión.

Puede habilitar Anuncio del nombre del asunto de la CA en oyentes nuevos y existentes. Para obtener más información, consulte Adición de un oyente HTTPS.

Registros de conexión de Equilibradores de carga de aplicación

Elastic Load Balancing proporciona registros de conexión que capturan atributos sobre las solicitudes enviadas a los Equilibradores de carga de aplicación. Los registros de conexión contienen información como la dirección IP y el puerto del cliente, la información del certificado del cliente, los resultados de la conexión y los cifrados TLS que se utilizan. Estos registros de conexión se pueden usar luego para revisar los patrones de solicitudes y otras tendencias.

Para obtener más información sobre los registros de conexión, consulte Registros de conexión del Equilibrador de carga de aplicación.