Perché ricevo un errore di negoziazione SSL/TLS del client quando provo a connettermi al mio bilanciatore del carico?

5 minuti di lettura
0

Ricevo un errore di negoziazione Secure Sockets Layer (SSL) /Transport Layer Security (TLS) quando provo a connettermi al bilanciatore del carico. Perché ricevo questo errore?

Breve descrizione

Un errore di negoziazione TLS del client indica che una connessione TLS avviata dal client non è stata in grado di stabilire una sessione con il bilanciatore del carico. Gli errori di negoziazione TLS si verificano quando i client tentano di connettersi a un bilanciatore del carico utilizzando un protocollo o un codice non supportato dalla policy di sicurezza del bilanciatore del carico. Per stabilire una connessione TLS, assicurati che il client supporti quanto segue:

  • Uno o più crittografie corrispondenti
  • Un protocollo specificato nella policy di sicurezza

Risoluzione

Nota: se ricevi errori durante l'esecuzione dei comandi dell’Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Identificare la policy di sicurezza del bilanciatore del carico

Dalla Console di gestione AWS:

1.    Apri la console Amazon Elastic Compute Cloud (Amazon EC2).

2.    Nel riquadro di navigazione, in BILANCIAMENTO DEL CARICO, scegli Bilanciatori del carico..

3.    Seleziona il bilanciatore del carico, quindi scegli Ascoltatore.

4.    Visualizza la policy di sicurezza.
Per Application Load Balancer e Network Load Balancer, trova la policy di sicurezza nella colonna Policy di sicurezza.
Per Classic Load Balancer, scegli Modifica nella colonna Crittografia per visualizzare la policy di sicurezza.

Dall'interfaccia della linea di comando di AWS:

Determina quali protocolli e crittografie sono supportati dalla policy di sicurezza del sistema di bilanciamento del carico

I Classic Load Balancer supportano policy di sicurezza personalizzate. Tuttavia, Application Load Balancer e Network Load Balancer non supportano policy di sicurezza personalizzate. Per ulteriori informazioni sulle policy di sicurezza, inclusa la policy di sicurezza predefinita, vedi quanto segue:

(Facoltativo) Verificare la policy di sicurezza del bilanciatore del carico

Per testare i protocolli e le crittografie supportati dalla policy di sicurezza del bilanciatore del carico, utilizza uno strumento della linea di comando open source come sslscan.

Utilizzo del comando sslscan

Puoi installare ed eseguire il comando sslscan su qualsiasi istanza Amazon EC2 Linux o dal tuo sistema locale. Assicurati che il bilanciatore del carico che desideri testare accetti connessioni TLS dal tuo indirizzo IP di origine. Per usare sslscan su un'istanza Amazon Linux EC2:

1.    Abilita il repository Extra Packages for Enterprise Linux (EPEL).

2.    Esegui il comando sudo yum install sslscan.

3.    Esegui il seguente comando per scansionare il bilanciatore del carico alla ricerca di crittografie supportate. Assicurati di sostituire example.com con il tuo nome di dominio.

[ec2-user@ ~]$ sslscan --show-ciphers example.com

Utilizzo del comando openssl

In alternativa, è anche possibile testare la policy di sicurezza del bilanciatore del carico usando il comando openssl. Puoi eseguire il comando openssl su qualsiasi istanza Amazon EC2 Linux o dal tuo sistema locale.

Per elencare le crittografie supportate per una particolare versione SSL/TLS, usa il comando crittografie openssl:

*$* openssl ciphers -v

Ad esempio, il seguente comando mostrerebbe le crittografie supportate dalla versione TLS TLSv1.2:

*$* openssl ciphers -V | grep "TLSv1.2"

Usa il comando s_client per testare le versioni TLS e le suite di crittografia. Per scoprire la forza di particolari suite di crittografia, puoi utilizzare un repository di siti Web come ciphersuites.info. Ad esempio, il comando seguente mostrerebbe le crittografie per www.example.com:

openssl s_client -connect example.com:443

Ad esempio, la suite TLS_PSK_WITH_AES_128_CBC_SHA è considerata debole. Se utilizzi la suite su un server, ricevi il seguente errore:

openssl s_client -connect example.com:443 -cipher PSK-AES128-CBC-SHA -quiet
140062732593056:error:140740B5:SSL routines:SSL23_CLIENT_HELLO:no ciphers available:s23_clnt.c:508:

La suite ECDHE-RSA-AES128-GCM-SHA256 è considerata forte. Se utilizzi la suite contro il server, ricevi un messaggio di successo simile al seguente:

openssl s_client -connect example.com:443 -cipher ECDHE-RSA-AES128-GCM-SHA256
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: 73B49649716645B90D13E29656AEFEBF289A4956301AD9BC65D4832794E282CD
Session-ID-ctx:
Master-Key: C738D1E7160421281C4CAFEA49941895430168A4028B5D5F6CB6739B58A15235F640A5D740D368A4436CCAFD062B3338
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1647375807
Timeout : 300 (sec)
Verify return code: 0 (ok)

È inoltre possibile utilizzare il comando openssl per specificare la versione del protocollo TLS utilizzata nella connessione. L'esempio seguente mostra un test che verifica che TLS 1.1 sia supportato dal server:

openssl s_client -connect example.com:443 -tls1_1 -quiet
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2
verify return:1
depth=1 C = US, O = DigiCert Inc, CN = DigiCert Global CA G2
verify return:1
depth=0 CN = *.peg.a2z.com
verify return:1

Aggiornare la policy di sicurezza del bilanciatore del carico, se necessario

Per aggiornare la policy di sicurezza del bilanciatore del carico per utilizzare protocolli o crittografie supportate e raggiungere il livello di sicurezza desiderato, esegui le seguenti azioni: