Direkt zum Inhalt

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

Lesedauer: 5 Minute
0

Ich möchte einen SSL/TLS-Verhandlungsfehler beheben, der auftritt, wenn ich eine Verbindung zu meinem Elastic Load Balancer (ELB) herstelle.

Kurzbeschreibung

Dieser Fehler tritt auf, wenn der Client keine sichere Verbindung mit dem Load Balancer aushandeln kann. Das Problem wird in der Regel durch nicht unterstützte Chiffren oder Protokollversionen verursacht.

Um eine TLS-Verbindung herzustellen, stelle sicher, dass der Client mindestens eine Chiffre und ein Protokoll unterstützt, die in der Sicherheitsrichtlinie des Load Balancers definiert sind.

Lösung

**Anmerkung:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, findest du weitere Informationen unter Troubleshoot AWS CLI errors. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.

Identifizieren der Sicherheitsrichtlinie des Load Balancers

Gehe wie folgt vor, um die Sicherheitsrichtlinie des Load Balancers zu ermitteln:

  1. Öffne die Amazon Elastic Compute Cloud (Amazon EC2)-Konsole.
  2. Wähle im Navigationsbereich unter Load Balancing die Option Load Balancer.
  3. Wähle den Load Balancer aus und dann wähle Listeners.
  4. Sieh dir die Sicherheitsrichtlinie an.
    Für Application Load Balancer und Network Load Balancer findest du die Sicherheitsrichtlinie in der Spalte Security policy.
    Wähle für Classic Load Balancers Ändern in der Spalte Chiffre, um die Sicherheitsrichtlinie anzuzeigen.

Um die AWS-CLI zu verwenden, führe einen der folgenden Befehle aus:

Unterstützte Protokolle und Chiffren ermitteln

Classic Load Balancer unterstützen benutzerdefinierte Sicherheitsrichtlinien. Application Load Balancer und Network Load Balancer unterstützen jedoch keine benutzerdefinierten Sicherheitsrichtlinien.

Weitere Informationen zu Sicherheitsrichtlinien findest du in der folgenden Dokumentation:

(Optional) Die Sicherheitsrichtlinie des Load Balancers testen

Teste die Protokolle und Chiffren, die von der Sicherheitsrichtlinie des Load Balancers unterstützt werden. Verwende ein Open-Source-Befehlszeilentool wie sslscan oder openssl.

Weitere Informationen findest du unter sslscan auf der GitHub-Website.

Befehl sslscan verwenden

Installiere den Befehl sslscan auf einer Amazon Linux EC2-Instance oder vom lokalen System aus und führe ihn aus. Stelle sicher, dass der Load Balancer TLS-Verbindungen von der Quell-IP-Adresse akzeptiert.

Gehe wie folgt vor, um sslscan auf einer Amazon Linux EC2-Instance zu verwenden:

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

  2. Führe den folgenden Befehl aus:

    sudo yum install sslscan
  3. Um den Load Balancer nach unterstützten Chiffren zu durchsuchen, führe den folgenden Befehl aus. Ersetze example.com durch deinen Domain-Namen:

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

    Hinweis: Amazon Linux 2023 (AL2023) unterstützt EPEL nicht.

Befehl openssl verwenden

Um die Sicherheitsrichtlinie des Load Balancers zu testen, kannst du auch den Befehl openssl verwenden. Führe den Befehl openssl auf einer Amazon Linux EC2-Instance oder vom lokalen System aus.

Führe den folgenden Befehl aus, um die unterstützten Chiffren für eine bestimmte SSL/TLS-Version aufzulisten:

*$* openssl ciphers -v

Der folgende Befehl zeigt Chiffren, die von der TLS-Version TLS 1.2 unterstützt werden:

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

Führe den Befehl s_client aus, um TLS-Versionen und Cipher Suites zu testen. Um die Stärke einer bestimmten Cipher-Suite zu ermitteln, verwende ein Website-Repository eines Dritten wie TLS Ciphersuite Search. Wenn du beispielsweise den folgenden Befehl ausgeführt hast, werden in der Ausgabe Chiffren für www.example.com angezeigt:

openssl s_client -connect example.com:443

Die Suite TLS_PSK_WITH_AES_128_CBC_SHA ist schwach. Wenn du die Suite gegen einen Server verwendest, dann erhältst du den folgenden Fehler:

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 ist stark. Wenn du die Suite gegen den Server verwendest, dann erhältst du 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)

Um die Version des TLS-Protokolls anzugeben, das in der Verbindung verwendet wird, führe den Befehl openssl aus. 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

(Optional) Die Verbindungsprotokolle für den Application Load Balancer und die Zugriffsprotokolle für den Network Load Balancer überprüfen

Wenn der Client HTTPS-Listener für den Application Load Balancer verbindet, verwende Verbindungsprotokolle, um das Protokoll und die Chiffre zu überprüfen. Das Protokoll und die für die Verbindung verwendete Chiffre befinden sich in den Feldern tls_protocol und tls_cipher. Wenn die TLS-Verhandlung fehlgeschlagen ist, wird das Feld tls_verify_status auf Failed:$error_code gesetzt, und die Felder tls_protocol und tls_cipher werden auf „-“ gesetzt.

Wenn der Client TLS-Listener für den Network Load Balancer verbindet, verwende Zugriffsprotokolle, um das Protokoll und die Chiffre zu überprüfen. Das für die Verbindung verwendete Protokoll und die Chiffre befinden sich in den Feldern tls_protocol_version und tls_cipher. Wenn die TLS-Aushandlung fehlgeschlagen ist, werden keine Zugriffsprotokolle aufgezeichnet.

Weitere Informationen findest du unter Verbindungsprotokolle für den Application Load Balancer und Zugriffsprotokolle für den Network Load Balancer.

Aktualisieren der Sicherheitsrichtlinie des Load Balancers

Um unterstützte Protokolle oder Chiffren zur Erhöhung der Sicherheit zu verwenden, aktualisiere die Sicherheitsrichtlinie des Load Balancers. Weitere Informationen zum Aktualisieren von Sicherheitsrichtlinien findest du in der folgenden Dokumentation: