2015-01-13 7 views
5

Ich habe ein Problem mit Weblogic Zugriff auf einen HTTPS-Server, ich kann auf andere HTTPS URLs wie Google oder Microsoft zugreifen. Der Code, der auf die URL versucht, eine Verbindung ist:Zugriff auf HTTPS über Weblogic nicht möglich

URL url = new URL("https://myserver.com"); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
connection.setRequestMethod("GET"); 
connection.setRequestProperty("User-Agent", "Mozilla/5.0"); 

// fails here 
responseCode = connection.getResponseCode(); 

ich die folgende Stack-Trace erhalten:

java.io.IOException: Connection closed, EOF detected 
    at weblogic.socket.JSSEFilterImpl.handleUnwrapResults(JSSEFilterImpl.java:539) 
    at weblogic.socket.JSSEFilterImpl.unwrapAndHandleResults(JSSEFilterImpl.java:456) 
    at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:80) 
    at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:64) 
    at weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:59) 
    at weblogic.socket.JSSEFilterImpl.write(JSSEFilterImpl.java:390) 
    at weblogic.socket.JSSESocket$JSSEOutputStream.write(JSSESocket.java:78) 
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) 
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) 
    at java.io.FilterOutputStream.flush(FilterOutputStream.java:140) 
    at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:186) 
    at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:400) 
    at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37) 
    at weblogic.net.http.HttpURLConnection.getResponseCode(HttpURLConnection.java:1005) 

In Weblogic der Konsole habe ich das auf true gesetzt folgende Einstellung: Environment> Servers> [meinem Server]> SSL> Erweitert> Verwenden JSSE SSL

Wenn ich deaktivieren diese Eigenschaft ich folgende Stack-Trace erhalten:

javax.net.ssl.SSLKeyException: FATAL Alert:BAD_CERTIFICATE - A corrupt or unuseable certificate was received. 
    at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireException(Unknown Source) 
    at com.certicom.tls.interfaceimpl.TLSConnectionImpl.fireAlertSent(Unknown Source) 
    at com.certicom.tls.record.handshake.HandshakeHandler.fireAlert(Unknown Source) 
    at com.certicom.tls.record.handshake.HandshakeHandler.handleHandshakeMessages(Unknown Source) 
    at com.certicom.tls.record.MessageInterpreter.interpretContent(Unknown Source) 
    at com.certicom.tls.record.MessageInterpreter.decryptMessage(Unknown Source) 
    at com.certicom.tls.record.ReadHandler.processRecord(Unknown Source) 
    at com.certicom.tls.record.ReadHandler.readRecord(Unknown Source) 
    at com.certicom.tls.record.ReadHandler.readUntilHandshakeComplete(Unknown Source) 
    at com.certicom.tls.interfaceimpl.TLSConnectionImpl.completeHandshake(Unknown Source) 
    at com.certicom.tls.record.WriteHandler.write(Unknown Source) 
    at com.certicom.io.OutputSSLIOStreamWrapper.write(Unknown Source) 
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) 
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) 
    at java.io.FilterOutputStream.flush(FilterOutputStream.java:140) 
    at weblogic.net.http.HttpURLConnection.writeRequests(HttpURLConnection.java:186) 
    at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:400) 
    at weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:37) 
    at weblogic.net.http.HttpURLConnection.getResponseCode(HttpURLConnection.java:1005) 

Der Server, auf den ich zugreifen möchte, hat ein verifiziertes Zertifikat und die Browser beschweren sich nicht.

Dank

+0

Ich weiß nicht genug, dies zu beantworten, sondern versuchen, an diesem anderen suchen (beantwortet) SO Frage: http://stackoverflow.com/questions/6353849/received- fatal-alert-handshake-failure-durch-sslhandshakeexception – dcsohl

+0

Wollen Sie nicht stattdessen eine 'Https'-Verbindung verwenden und die Zertifikate einstellen, wenn sie benötigt werden? http://docs.oracle.com/cd/E11035_01/wls100/javadocs/weblogic/net/http/HttpsURLConnection.html –

Antwort

2

Für mich -DUseSunHttpHandler=true Werke verwenden, aber ich kann nicht haben Dieser Parameter, weil ich dann Probleme mit dem Neustart von Managed Server bei der erneuten Bereitstellung habe.

Das half mir:

url = new URL(null,"https://yoururl.com",new sun.net.www.protocol.https.Handler()); 
+1

Dies wird in Eclipse zum Zeitpunkt der Kompilierung fehlschlagen, da diese Klasse nicht zugänglich ist eine Java API. Sie können es jedoch bei Bedarf indirekt über Reflektion verwenden. –