Verstehen des Fehlers „Empfangene schwerwiegende Warnung: handshake_failure through SSLHandshakeException“ in SSL-Verbindungen
Der Handshake-Fehlerfehler in SSL-Verbindungen kann aufgrund von auftreten verschiedene Faktoren:
Potenzial Ursachen:
-
Nicht übereinstimmende Verschlüsselungssammlungen: Der Client und der Server verwenden möglicherweise keine kompatiblen Verschlüsselungssammlungen, sodass der Client eine vom Server unterstützte anpassen oder aktivieren muss.
-
Versionsinkompatibilität: Der Server und der Client arbeiten möglicherweise mit unterschiedlichen SSL-Versionen, was möglicherweise zu einer Version führt Nichtübereinstimmungen. Der Client sollte die Kompatibilität mit der Version des Servers sicherstellen.
-
Unvollständiger Zertifikat-Vertrauenspfad: Dem Zertifikat des Servers vertraut der Client möglicherweise nicht, da seine ausstellende Zertifizierungsstelle nicht im Vertrauensspeicher des Clients vorhanden ist. Um dieses Problem zu beheben, sollte das CA-Zertifikat des Servers in den Trust Store importiert werden.
-
Falsche Zertifikatsdomäne: Das Serverzertifikat wurde möglicherweise für eine andere Domäne als die, auf die zugegriffen wird, ausgestellt. In diesem Fall sollte der Server das richtige Zertifikat erhalten.
Debuggen des Handshake-Fehlers:
Um die Ursache des Handshake-Fehlers zu ermitteln, aktivieren Sie das SSL-Debugging unter Verwendung des Flags -Djavax.net.debug=all. Dadurch wird ein detailliertes Protokoll der SSL-Verbindungsaufbauaktivitäten bereitgestellt.
Aktualisierung:
Weitere Untersuchungen deuten darauf hin, dass das Problem auf einen unvollständigen Zertifikat-Vertrauenspfad zurückzuführen ist, in dem der Stamm liegt Die Zertifizierungsstelle für das Serverzertifikat fehlt im Vertrauensspeicher des Clients. Um dieses Problem zu beheben, sollte das CA-Zertifikat in den von der JVM verwendeten Trust Store importiert werden, normalerweise die cacerts-Datei.
Die JSSE-Trace-Ausgabe verstehen:
Die JSSE Trace liefert Informationen über Keystores, Truststores und den Handshake-Prozess:
-
Keystores und Truststores:Diese werden am Anfang der Ablaufverfolgung aufgeführt und geben die Speicherorte und Typen der verwendeten Schlüsselspeicher und Truststores an.
-
Vertrauenswürdige Zertifikate:Die Ablaufverfolgung enthält einen Abschnitt, der die auflistet vertrauenswürdige Zertifikate im Truststore. Wenn die CA des Servers nicht aufgeführt ist, ist dies möglicherweise die Ursache des Vertrauenspfadproblems.
-
Handshake-Stufen: Die Ablaufverfolgung enthält Einträge, die ClientHello, ServerHello und den Zertifikatsaustausch beschreiben. Der Fehler wird möglicherweise im ServerHello angezeigt, das die ausgewählte Verschlüsselungssuite angibt und angibt, ob das Serverzertifikat akzeptiert wurde.
Das obige ist der detaillierte Inhalt vonWarum schlägt meine SSL-Verbindung mit der Fehlermeldung „Received fatal warning: handshake_failure' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!