2016-04-14 4 views
0

Ich habe die Erforschung worden, warum ich erhalte:Vertrauen Websocket SSL - Getting fatal Alarm: handshake_failure

java.util.concurrent.ExecutionException: javax.net.ssl.SSLException: Received fatal alert: handshake_failure 

aber ich habe zu einem Verlust kommen. Hier ist mein Code:

import org.eclipse.jetty.util.log.Log; 
import org.eclipse.jetty.util.log.Logger; 
import org.eclipse.jetty.util.ssl.SslContextFactory; 
import org.eclipse.jetty.websocket.api.Session; 
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; 
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; 
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; 
import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; 
import org.eclipse.jetty.websocket.api.annotations.WebSocket; 
import org.eclipse.jetty.websocket.client.WebSocketClient; 

import java.net.URI; 
import java.security.NoSuchAlgorithmException; 
import java.util.concurrent.Future; 

@WebSocket 
public class ConnectDamnit { 

    private static final Logger LOG = Log.getLogger(ConnectDamnit.class); 

    public static void main(String[] args) throws NoSuchAlgorithmException 
    { 
     String url = "wss://host.com:10443/listen"; 

     SslContextFactory sslContextFactory = new SslContextFactory(); 
     sslContextFactory.setTrustAll(true); // The magic 

     WebSocketClient client = new WebSocketClient(sslContextFactory); 
     try 
     { 
      client.start(); 
      ConnectDamnit socket = new ConnectDamnit(); 
      Future<Session> fut = client.connect(socket,URI.create(url)); 
      Session session = fut.get(); 
      session.getRemote().sendString("{JSONDATA}"); 
     } 
     catch (Throwable t) 
     { 
      LOG.warn(t); 
      t.printStackTrace(System.err); 
     } 
    } 

    @OnWebSocketConnect 
    public void onConnect(Session sess) 
    { 
     LOG.info("onConnect({})",sess); 
    } 

    @OnWebSocketClose 
    public void onClose(int statusCode, String reason) 
    { 
     LOG.info("onClose({}, {})", statusCode, reason); 
    } 

    @OnWebSocketError 
    public void onError(Throwable cause) 
    { 
     LOG.warn(cause); 
    } 

    @OnWebSocketMessage 
    public void onMessage(String msg) 
    { 
     LOG.info("onMessage() - {}", msg); 
    } 
} 

Und hier ist der vollständige Fehler:

java.util.concurrent.ExecutionException: javax.net.ssl.SSLException: Received fatal alert: handshake_failure 
    at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:123) 
    at JMeter.plugins.functional.samplers.websocket.ConnectDamnit.main(ConnectDamnit.java:40) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
Caused by: 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:1666) 
    at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1634) 
    at sun.security.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:1800) 
    at sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1083) 
    at sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:907) 
    at sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:781) 
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624) 
    at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:502) 
    at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(SslConnection.java:802) 
    at org.eclipse.jetty.io.WriteFlusher.completeWrite(WriteFlusher.java:400) 
    at org.eclipse.jetty.io.ssl.SslConnection$1.run(SslConnection.java:97) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) 
    at java.lang.Thread.run(Thread.java:745) 

ich in der Lage bin ganz gut an diese Buchse mit einer Chrom-Plugin zu verbinden, so ich bin nicht sicher, warum kann ich 'Dort. Irgendwelche Hinweise oder Vorschläge? Ich kann WSS verbinden: just fine //echo.websocket.org/

+0

Verwenden Sie ein selbst signiertes Zertifikat auf dem Server? –

Antwort

0

Aktualisiert Steg und nicht mehr Fehler bekommen ..

<dependency> 
    <groupId>org.eclipse.jetty.websocket</groupId> 
    <artifactId>websocket-client</artifactId> 
    <version>9.3.9.M1</version> 
    <classifier>hybrid</classifier> 
</dependency> 
Verwandte Themen