2016-04-19 6 views
0

Wenn ich https-URL zu verbinden versuchen ... ich bin immer ssl Handshaking Ausfall ... I VertX-Version verwenden >> 2.1.5 Bitte helfen ich, um das zu lösen ... Ich bin hier fest, es ist sehr wichtig für michVertX ssl Handshake-Fehler während auf https Verbindungs ​​URL VertX Httpclient

This code is working fine, giving me proper response.. 

    URL url = new URL("https://bugzilla.mozilla.org/rest/bug/707428/comment"); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setDoOutput(true); 
    conn.setRequestMethod("GET"); 
    conn.setRequestProperty("accept", "application/json"); 
    InputStream is=conn.getInputStream(); 
    InputStreamReader isr=new InputStreamReader(is); 
    BufferedReader br=new BufferedReader(isr); 
    String str=null; 
    while((str=br.readLine())!=null){ 
     System.out.println(str); 
    } 
    conn.disconnect();  

aber während vertx verwenden. es ist, die Hand schüttelt Problem

HttpClient client = MyServer.defaultVertx.createHttpClient().setSSL(true).setTrustAll(true) 
       .setHost("bugzilla.mozilla.org").setPort(443).setVerifyHost(false); 

     HttpClientRequest request= client.request("GET","/rest/bug/707428/comment",new Handler<HttpClientResponse>() { 

      @Override 
      public void handle(HttpClientResponse cRes) { 
       System.out.println(" HttpClientResponse Done.."+cRes); 
       cRes.bodyHandler(new Handler<Buffer>() { 
        @Override 
        public void handle(Buffer data) { 
         System.out.println("Response (" + data.length() + "): "); 
         System.out.println("Response >>" +data.getString(0, data.length())); 
        } 
       }); 

       cRes.dataHandler(new Handler<Buffer>() { 
        @Override 
        public void handle(Buffer data) { 
         System.out.println("data Handler (" + data.length() + "): "); 
         System.out.println("data Handler<>> "+data.getString(0, data.length())); 
        } 
       }); 

       cRes.exceptionHandler(new Handler<Throwable>() { 
        @Override 
        public void handle(Throwable arg0) { 
         arg0.printStackTrace(); 
        } 
       }); 
      } 
     }); 

     request.exceptionHandler(new Handler<Throwable>() { 
      @Override 
      public void handle(Throwable arg0) { 
       // TODO Auto-generated method stub 
       arg0.printStackTrace(); 
      } 
     }); 
     request.end(); 
     client.close(); 




javax.net.ssl.SSLException: Received fatal alert: handshake_failure 
      at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) 
      at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1619) 
      at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1587) 
      at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1756) 
      at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1060) 
      at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:884) 
      at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:758) 
      at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) 
      at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1001) 
      at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:927) 
      at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:873) 
      at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:241) 
      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:149) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) 
      at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) 
      at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:125) 
      at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
      at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
      at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
      at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
      at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) 
      at java.lang.Thread.run(Thread.java:745) 
+2

Bitte bemühen Sie den Code richtig zu formatieren. –

Antwort

0

Es ist schwierig, das genaue Problem für diese Ausnahme zu ermitteln.
Es könnte inkompatible Verschlüsselungen sein, JCE Policy Jars fehlen, SSL-Versionsprobleme usw.

Ich würde vorschlagen, Debugging von Connection related Problem zu sehen, was genau schief gelaufen ist.

-Djavax.net.debug = alle

auf diesen Link finden Sie für moreinfo

0

Das Codebeispiel ist 433 bis Port anschließen, während HTTPS auf 443. Meine Vermutung zu hören ist, ist, dass es ein Tippfehler in Ihrer Frage ist, sonst würden Sie nicht den SSL-Handshake bekommen Fehler.

Ihr Code sieht gut aus und sollte in der Lage sein, selbst signierte SSL-Zertifikate zu verarbeiten. Ich vermute, dass dies ein Problem mit der spezifischen SSL-Konfiguration von bugzilla.mozilla.org in Kombination mit der HTTP-Client-Implementierung in Vert.x 2 ist. Sie können dies durch Zugriff auf einen anderen Host (z. B. https://google.com) überprüfen.

Eine mögliche Ursache könnte sein, dass das SSL-Setup auf mozilla.org SNI (Server Name Indication) erfordert und der Vert.x HTTPClient dies nicht standardmäßig sendet.

+0

Danke für die schnelle Antwort, ich versuchte auch mit Port 443, immer noch bekomme ich den gleichen Fehler, ich versuchte es auch durch Hinzufügen von >> cReq.headers(). Set ("host", "bugzilla.mozilla.org"); cReq.setChunked (wahr); –

+0

@Rahul sharma: Ein Handshake-Fehler bedeutet, dass der Fehler beim Herstellen der Verbindung aufgetreten ist. Daher wurden keine Daten gesendet -> es spielt keine Rolle, was Sie im Anforderungsheader einstellen, weil sie Ihren PC nie verlassen haben. – Robert