View a markdown version of this page

Autenticazione reciproca con TLS in Application Load Balancer - Elastic Load Balancing

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Autenticazione reciproca con TLS in Application Load Balancer

L'autenticazione reciproca TLS è una variante del Transport Layer Security (TLS). Il TLS tradizionale stabilisce comunicazioni sicure tra un server e un client, laddove il server deve fornire la propria identità ai propri client. Con il protocollo TLS reciproco, un load balancer negozia l'autenticazione reciproca tra client e server mentre negozia il protocollo TLS. Quando si utilizza il protocollo TLS reciproco con Application Load Balancer, si semplifica la gestione delle autenticazioni e si riduce il carico sulle applicazioni.

Utilizzando il protocollo TLS reciproco, il load balancer può gestire l'autenticazione dei client per garantire che solo i client affidabili comunichino con le applicazioni backend. Quando si utilizza questa funzionalità, il load balancer autentica i client utilizzando certificati di autorità di certificazione (CA) di terze parti o utilizzando Autorità di certificazione privata AWS (PCA), facoltativamente, con controlli di revoca. Il load balancer trasmette le informazioni sul certificato del client al backend utilizzando intestazioni HTTP, che le applicazioni possono utilizzare per l'autorizzazione.

Mutual TLS for Application Load Balancers offre le seguenti opzioni per la convalida dei certificati client: X.509v3

  • Passthrough TLS reciproco: il load balancer invia l'intera catena di certificati client alla destinazione, senza verificarla. Le destinazioni devono verificare la catena di certificati del client. Quindi, utilizzando la catena di certificati client, è possibile implementare l'autenticazione del load balancer e la logica di autorizzazione delle destinazioni nell'applicazione.

  • Verifica TLS reciproca: il load balancer esegue l'autenticazione dei certificati X.509 client per i client quando un load balancer negozia le connessioni TLS.

Per utilizzare il passthrough TLS reciproco, è necessario configurare il listener in modo che accetti i certificati dai client. Per utilizzare il protocollo TLS reciproco con verifica, vedere. Configurazione del protocollo TLS reciproco su un Application Load Balancer

Prima di iniziare a configurare il protocollo TLS reciproco sull'Application Load Balancer

Prima di iniziare a configurare il protocollo TLS reciproco sull'Application Load Balancer, tenete presente quanto segue:

Quote

Gli Application Load Balancer includono alcuni limiti relativi alla quantità di archivi attendibili, certificati CA ed elenchi di revoca dei certificati in uso all'interno del tuo account. AWS

Per ulteriori informazioni, consulta la Quote per Application Load Balancer.

Requisiti per i certificati

Gli Application Load Balancer supportano quanto segue per i certificati utilizzati con l'autenticazione TLS reciproca:

  • Certificato supportato: X.509v3

  • Chiavi pubbliche supportate: RSA 2K — 8K o ECDSA secp256r1, secp384r1, secp521r1

  • Algoritmi di firma supportati: SHA256, 384, 512 con, 384, 512 con hash 384.512 con hash con MGF1 RSA/SHA256 EC/SHA256 RSASSA-PSS

Pacchetti di certificati CA

Quanto segue si applica ai pacchetti di autorità di certificazione (CA):

  • Gli Application Load Balancer caricano ogni pacchetto di certificati di autorità di certificazione (CA) come batch. Gli Application Load Balancer non supportano il caricamento di singoli certificati. Se devi aggiungere nuovi certificati, devi caricare il file del bundle dei certificati.

  • Per sostituire un pacchetto di certificati CA, usa l'ModifyTrustStoreAPI.

Ordine del certificato per il passthrough

Quando si utilizza il passthrough TLS reciproco, Application Load Balancer inserisce delle intestazioni per presentare la catena di certificati del client alle destinazioni del backend. L'ordine di presentazione inizia con i certificati foglia e termina con il certificato radice.

Ripresa della sessione

La ripresa della sessione non è supportata quando si utilizzano le modalità di verifica o passthrough TLS reciproche con un Application Load Balancer.

Intestazioni HTTP

Gli Application Load Balancer utilizzano le X-Amzn-Mtls intestazioni per inviare informazioni sui certificati quando negoziano le connessioni client utilizzando il protocollo TLS reciproco. Per ulteriori informazioni ed esempi di intestazioni, vedere. intestazioni HTTP e TLS reciproco

File di certificato CA

I file di certificato CA devono soddisfare i seguenti requisiti:

  • Il file di certificato deve utilizzare il formato PEM (Privacy Enhanced Mail).

  • Il contenuto del certificato deve essere racchiuso entro i limiti -----BEGIN CERTIFICATE----- e-----END CERTIFICATE-----.

  • I commenti devono essere preceduti da un # carattere e non devono contenere caratteri. -

  • Non possono esserci righe vuote.

Esempio di certificato non accettato (non valido):

# 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-----

Esempi di certificati accettati (validi):

  1. Certificato singolo (con codifica PEM):

    # comments -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE-----
  2. Certificati multipli (con codifica PEM):

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

intestazioni HTTP e TLS reciproco

Questa sezione descrive le intestazioni HTTP utilizzate dagli Application Load Balancer per inviare informazioni sui certificati durante la negoziazione delle connessioni con i client tramite TLS reciproco. Le X-Amzn-Mtls intestazioni specifiche utilizzate da Application Load Balancer dipendono dalla modalità TLS reciproca specificata: modalità passthrough o modalità di verifica.

Per informazioni su altre intestazioni HTTP supportate da Application Load Balancer, consulta. Intestazioni HTTP e Application Load Balancer

Intestazione HTTP per la modalità passthrough

Per il TLS reciproco in modalità passthrough, Application Load Balancer utilizza la seguente intestazione.

Questa intestazione contiene il formato URL-encoded PEM dell'intera catena di certificati client presentata nella connessione, con caratteri sicuri. +=/

Esempio di contenuto dell'intestazione:

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

Intestazioni HTTP per la modalità di verifica

Per il TLS reciproco in modalità di verifica, gli Application Load Balancer utilizzano le seguenti intestazioni.

Questa intestazione contiene una rappresentazione esadecimale del numero di serie del certificato Leaf.

Esempio di contenuto dell'intestazione:

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

Questa intestazione contiene una rappresentazione in stringa RFC2253 del nome distinto (DN) dell'emittente.

Esempio di contenuto dell'intestazione:

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

Questa intestazione contiene una rappresentazione in stringa RFC2253 del nome distinto (DN) del soggetto.

Esempio di contenuto dell'intestazione:

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

Questa intestazione contiene un formato ISO8601 della data e della data. notBefore notAfter

Esempio di contenuto dell'intestazione:

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

Questa intestazione contiene un formato URL-encoded PEM del certificato leaf, con caratteri sicuri+=/.

Esempio di contenuto dell'intestazione:

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

I nomi degli oggetti della Advertising Certificate Authority (CA) migliorano il processo di autenticazione aiutando i clienti a determinare quali certificati saranno accettati durante l'autenticazione TLS reciproca.

Quando abiliti Pubblicizza i nomi dei soggetti delle CA, Application Load Balancer pubblicizzerà l'elenco dei nomi dei soggetti delle autorità di certificazione (CA) considerati attendibili, in base all'archivio di fiducia a cui è associato. Quando un client si connette a una destinazione tramite Application Load Balancer, riceve l'elenco dei nomi di oggetto CA attendibili.

Durante l'handshake TLS, quando Application Load Balancer richiede un certificato client, include un elenco di CA Distinguished Names (DNs) affidabili nel messaggio di richiesta di certificato. Questo aiuta i client a selezionare certificati validi che corrispondono ai nomi dei soggetti CA pubblicizzati, semplificando il processo di autenticazione e riducendo gli errori di connessione.

È possibile abilitare Advertise CA subject name su listener nuovi ed esistenti. Per ulteriori informazioni, consulta Aggiunta di un ascoltatore HTTPS.

Registri di connessione per Application Load Balancer

Elastic Load Balancing fornisce registri di connessione che acquisiscono gli attributi relativi alle richieste inviate agli Application Load Balancer. I log di connessione contengono informazioni quali l'indirizzo IP e la porta del client, le informazioni sul certificato del client, i risultati della connessione e i codici TLS utilizzati. Questi registri di connessione possono quindi essere utilizzati per esaminare i modelli di richiesta e altre tendenze.

Per saperne di più sui log di connessione, vedi Log di connessione per l'Application Load Balancer