Warum erhalte ich einen Client-SSL/TLS-Verhandlungsfehler, wenn ich versuche, eine Verbindung zu meinem Load Balancer herzustellen?

Lesedauer: 5 Minute
0

Ich erhalte einen Secure Sockets Layer (SSL)/Transport Layer Security (TLS)-Verhandlungsfehler, wenn ich versuche, eine Verbindung zu meinem Load Balancer herzustellen. Warum erhalte ich diesen Fehler?

Kurzbeschreibung

Ein Client-TLS-Verhandlungsfehler bedeutet, dass eine vom Client initiierte TLS-Verbindung keine Sitzung mit dem Load Balancer aufbauen konnte. TLS-Verhandlungsfehler treten auf, wenn Clients versuchen, mithilfe eines Protokolls oder einer Chiffre, die die Sicherheitsrichtlinie des Load Balancers nicht unterstützt, eine Verbindung zu einem Load Balancer herzustellen. Um eine TLS-Verbindung herzustellen, stellen Sie sicher, dass Ihr Client Folgendes unterstützt:

  • Eine oder mehrere passende Chiffren
  • Ein in der Sicherheitsrichtlinie spezifiziertes Protokoll

Lösung

Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS-CLI-Version verwenden.

Identifizieren der Sicherheitsrichtlinie Ihres Load Balancers

Von der AWS-Managementkonsole aus:

1.    Öffnen Sie die Amazon Elastic Compute Cloud (Amazon EC2)-Konsole.

2.    Wählen Sie im Navigationsbereich unter LOAD BALANCING die Option Load Balancers aus.

3.    Wählen Sie den Load Balancer und dann Listeners aus.

4.    Sehen Sie sich die Sicherheitsrichtlinie an.
Für Application Load Balancer und Network Load Balancer finden Sie die Sicherheitsrichtlinie in der Spalte Security policy.
Wählen Sie für Classic Load Balancers Change in der Spalte Chiffre, um die Sicherheitsrichtlinie anzuzeigen.

Aus der AWS CLI:

Stellen Sie sicher, dass die Protokolle und Chiffren von der Sicherheitsrichtlinie Ihres Load Balancers unterstützt werden

Classic Load Balancer unterstützen benutzerdefinierte Sicherheitsrichtlinien. Application Load Balancer und Network Load Balancer unterstützen jedoch keine benutzerdefinierten Sicherheitsrichtlinien. Weitere Informationen zu Sicherheitsrichtlinien, einschließlich der Standardsicherheitsrichtlinie, finden Sie unter den folgenden Links:

(Optional) Testen Sie die Sicherheitsrichtlinie Ihres Load Balancers

Verwenden Sie ein Open-Source-Befehlszeilentool wie sslscan, um die Protokolle und Chiffren zu testen, die von der Sicherheitsrichtlinie Ihres Load Balancers unterstützt werden.

Verwenden des Befehls sslscan

Sie können den Befehl sslscan auf jeder Amazon-EC2-Linux-Instance oder von Ihrem lokalen System aus installieren und ausführen. Stellen Sie sicher, dass der Load Balancer, den Sie testen möchten, TLS-Verbindungen von Ihrer Quell-IP-Adresse akzeptiert. Um sslscan auf einer Amazon-Linux-EC2-Instance zu verwenden:

1.    Aktivieren Sie das Repository Extra Packages for Enterprise Linux (EPEL).

2.    Führen Sie den Befehl sudo yum install sslscan aus.

3.    Führen Sie den folgenden Befehl aus, um Ihren Load Balancer nach unterstützten Chiffren zu durchsuchen. Ersetzen Sie example.com durch Ihren Domainnamen.

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

Verwenden des Befehls openssl

Sie können die Sicherheitsrichtlinie Ihres Load Balancers auch mit dem Befehl openssl testen. Sie können den Befehl openssl auf jeder Amazon-EC2-Linux-Instance oder von Ihrem lokalen System aus ausführen.

Um die unterstützten Chiffren für eine bestimmte SSL/TLS-Version aufzulisten, verwenden Sie den Befehl openssl ciphers:

*$* openssl ciphers -v

Der folgende Befehl würde beispielsweise Chiffren anzeigen, die von der TLS-Version TLSv1.2 unterstützt werden:

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

Verwenden Sie den Befehl s_client, um TLS-Versionen und Cipher-Suites zu testen. Um die Stärke bestimmter Chipher-Suites zu ermitteln, können Sie ein Website-Repository wie ciphersuites.info verwenden. Der folgende Befehl würde beispielsweise Chiffren für www.example.com anzeigen:

openssl s_client -connect example.com:443

Beispielsweise wird die Suite TLS_PSK_WITH_AES_128_CBC_SHA als schwach angesehen. Wenn Sie die Suite gegen einen Server verwenden, erhalten Sie die folgende Fehlermeldung:

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:

Die Suite ECDHE-RSA-AES128-GCM-SHA256 wird als stark angesehen. Wenn Sie die Suite gegen den Server verwenden, erhalten Sie eine Erfolgsmeldung ähnlich der folgenden:

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)

Sie können auch den Befehl openssl verwenden, um die Version des TLS-Protokolls anzugeben, das in der Verbindung verwendet wird. Das folgende Beispiel zeigt einen Test, der überprüft, ob TLS 1.1 vom Server unterstützt wird:

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

Aktualisieren der Sicherheitsrichtlinie Ihres Load Balancers bei Bedarf

Gehen Sie wie folgt vor, um die Sicherheitsrichtlinie Ihres Load Balancers so zu aktualisieren, dass unterstützte Protokolle oder Chiffren verwendet werden und das gewünschte Sicherheitsniveau erreicht wird: