2012-04-05 26 views
1

Nach dem 6.0SR10 von IBM JDK 6.0SR9 Aktualisierung ich erhalte (auf der Server-Seite):-Client angeforderte Protokoll SSLv3 nicht aktiviert oder nicht unterstützt (IBM JDK 6.0SR10)

java.io.IOException: javax.net.ssl.SSLHandshakeException: Client requested protocol SSLv3 not enabled or not supported 
       at com.ibm.jsse2.kb.z(kb.java:107) 
       at com.ibm.jsse2.SSLEngineImpl.b(SSLEngineImpl.java:4) 
       at com.ibm.jsse2.SSLEngineImpl.c(SSLEngineImpl.java:224) 
       at com.ibm.jsse2.SSLEngineImpl.wrap(SSLEngineImpl.java:377) 
       at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:6) 

Keine der Sicherheit Einstellungen wurden geändert. Irgendeine Idee, wie ich SSLv3 (re) aktivieren kann?

Danke.

+0

Auch einen Blick auf hier: http://stackoverflow.com/questions/28236091/how-to- enable-ssl-3-in-java – iAmcR

Antwort

0

SSLEngine.setEnabledProtocols(), aber SSLv3 sollte sicherlich standardmäßig aktiviert sein. Ich würde Ihre Behauptung überprüfen, dass sie nicht deaktiviert wurde.

+0

Doppelt überprüft. Tatsächlich kann ich das Problem nun reproduzieren, indem ich einfach zwischen dem alten und dem neuen ibmjsseprovider2.jar umschalte. Alles andere (conf, abhängige Bibliotheken) bleibt gleich. Indem ich das SSL-Protokoll explizit auf SSL_TLS/SSL_TLSv2 setze, bekomme ich die alte Funktionalität zurück. Wurde der Standardwert tatsächlich geändert? – heeboir

+0

Hier ist, was IBM in dieser Version als neu meldet: https://www.ibm.com/developerworks/java/jdk/security/60/secguides/jsse2Docs/JSSE2RefGuide.html#JSSE2RefGuide__WhatsNew – heeboir

+1

@heeboir Es gibt dort, dass die "IBM Implementation unterstützt die folgenden Protokolle: SSL, SSLv3, TLS, TLSv1 und SSL_TLS für die Engine-Klasse SSLContext oder die API setEnabledProtocols in den Klassen SSLSocket oder SSLServerSocket, "aber auch das SSLv3-Protokoll ist im FIPS-Modus nicht erlaubt". Befindest du dich im FIPS-Modus? – EJP

1

In späteren Versionen ist SSLv3 aus Sicherheitsgründen standardmäßig deaktiviert.

Die folgende TechNote sollte detailliert beschreiben, wie dies aktiviert wird.

http://www-01.ibm.com/support/docview.wss?uid=swg21318567

+0

Haben Sie einen Link zu SSLv3, der deaktiviert ist? Diese TechNote schlägt vor, wie man sowohl SSL als auch TLS aktiviert, aber ich kann nicht sehen, wo es sagt, dass SSLv3 deaktiviert ist (außer im FIPS-Modus, wie EJP sagte). – Bruno

1

Die Ausnahme tritt auf, wenn der Client und Server SSL-Protokoll Einstellungen nicht übereinstimmen.

Der folgende Client-Beispielcode arbeitet mit Server-Seite konfigurierte unterstützt TLSv1.2 Protokoll:

String response = ""; 

URL url = new URL("https://localhost:9043/myservlet); 

final SSLContext ctx = SSLContext.getInstance("TLSv1.2"); 
ctx.init(null, null, null); 
// final String protoccol = ctx.getProtocol(); 

HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory()); 

final HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 

conn.setReadTimeout(15000); 
conn.setConnectTimeout(15000); 
conn.setRequestMethod("POST"); 
conn.setDoInput(true); 
conn.setDoOutput(true); 

final OutputStream os = conn.getOutputStream(); 
final BufferedWriter writer = 
    new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 

writer.write(......); 

writer.flush(); 
writer.close(); 
os.close(); 

final int responseCode = conn.getResponseCode(); 

if (responseCode == HttpsURLConnection.HTTP_OK) { 
    String line; 
    final BufferedReader br = 
    new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    while ((line = br.readLine()) != null) { 
    response += line; 
    } 
} 

System.out.println("response: " + response);