SSL-Handshake-Warnung: Unrecognized_Name Error Resurfacing with Java 1.7.0 Upgrade
Nach dem Upgrade von Java 1.6 auf 1.7 können Benutzer auf einen Fehler stoßen SSL-Handshake-Warnung, gekennzeichnet durch die Fehlermeldung „unrecognized_name“. Dieses Problem tritt insbesondere beim Herstellen von SSL-Verbindungen zu einem Webserver auf.
Der Fehler ist auf die Einführung der SNI-Unterstützung (Server Name Indication) in Java 7 zurückzuführen, die standardmäßig aktiviert ist. Bestimmte falsch konfigurierte Server reagieren während des Handshakes mit einer Warnung „Unbekannter Name“, die von den meisten Clients ignoriert wird, nicht jedoch von Java.
Problemumgehungsoptionen:
Oracle-Ingenieure haben abgelehnt um dieses Problem anzugehen. Es stehen jedoch zwei Hauptproblemumgehungen zur Verfügung:
SNI deaktivieren:
Beachten Sie, dass sich die Deaktivierung von SNI auf die gesamte Anwendung auswirkt.
Behandeln Sie falsch konfigurierte Server:
Für einen gezielteren Ansatz verwenden Sie Folgendes Schritte:
Codebeispiel:
SSLSocketFactory factory = (SSLSocketFactory) SSLContext.getDefault().getSocketFactory(); SSLSocket sslsock = (SSLSocket) factory.createSocket(host, 443); try { sslsock.startHandshake(); } catch (SSLException e) { if (e.getMessage().equals("handshake alert: unrecognized_name")) { sslsock = (SSLSocket) factory.createSocket(host, 443); sslsock.startHandshake(); } else { // Handle other errors } }
Fazit:
Durch die Implementierung der beschriebenen Problemumgehungen Benutzer können den Fehler „unrecognized_name“ entschärfen, wenn sie Java 1.7.0 verwenden und mit falsch konfigurierten Servern interagieren und gleichzeitig die SNI-Funktionen beibehalten für andere Verbindungen.
Das obige ist der detaillierte Inhalt vonWarum erzeugt Java 1.7.0 eine SSL-Handshake-Warnung „unrecognized_name' und wie kann diese behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!