WebSocketException: не удалось получить входной поток необработанного сокета: сбой рукопожатия - PullRequest
0 голосов
/ 29 июня 2018

Я получаю исключение при подключении к безопасному веб-сокету

Это код сервера ...

 KeyStore keyStore = KeyStore.getInstance("BKS");ks.load(mActivity.getResources().openRawResource(R.raw.emm_truststore), STOREPASSWORD.toCharArray());

        KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
        kmf.init(ks, KEYPASSWORD.toCharArray());
        TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
        tmf.init(ks);
        SSLContext sslContext = null;
        sslContext = SSLContext.getInstance("TLS");
        sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
        chatserver.setWebSocketFactory(new DefaultSSLWebSocketServerFactory(sslContext));

        chatserver.start();

Это код клиента ....

 factory.setVerifyHostname(false);
            factory.setServerName("prince.com");
            WebSocket ws = null;
            try {
                ws = factory.createSocket("wss://localhost:55555");
            } catch (IOException e) {
                e.printStackTrace();
            }

            ws.addListener(new WebSocketListener() {
                @Override
                public void onStateChanged(WebSocket websocket, WebSocketState newState) throws Exception {
                    Log.d(TAG, " onStateChanged ");
                }

                @Override
                public void onConnected(WebSocket websocket, Map<String, List<String>> headers) throws Exception {
                    Log.d(TAG, " onConnected ");
                }

                @Override
                public void onConnectError(WebSocket websocket, WebSocketException cause) throws Exception {
                    Log.d(TAG, " onConnectError " + cause);
                }

                @Override
                public void onDisconnected(WebSocket websocket, WebSocketFrame serverCloseFrame, WebSocketFrame clientCloseFrame, boolean closedByServer) throws Exception {
                    Log.d(TAG, " onDisconnected ");
                }


            });
            ws.connect();
            ws.sendText("Hellooooooooooooooooooooooooooooooooo.");
            System.out.println(" Sending Hello to Server ");

Войти ...

WebSocketException: Failed to get the input stream of the raw socket: Handshake failed
06-29 22:49:31.925 9698-9724/? W/System.err:     at com.neovisionaries.ws.client.WebSocket.openInputStream(WebSocket.java:3233)
06-29 22:49:31.926 9698-9724/? W/System.err:     at com.neovisionaries.ws.client.WebSocket.shakeHands(WebSocket.java:3191)
        at com.neovisionaries.ws.client.WebSocket.connect(WebSocket.java:2235)
06-29 22:49:31.926 9698-9724/? W/System.err:     at com.vvdn.prince.websocketclients.MainActivity$ServerThread.run(MainActivity.java:242)
06-29 22:49:31.926 9698-9724/? W/System.err: Caused by: javax.net.ssl.SSLHandshakeException: Handshake failed
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:276)
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket.waitForHandshake(ConscryptFileDescriptorSocket.java:468)
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket.getInputStream(ConscryptFileDescriptorSocket.java:431)
        at com.neovisionaries.ws.client.WebSocket.openInputStream(WebSocket.java:3226)
        ... 3 more
    Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x7575234400: Failure in SSL library, usually a protocol error
    error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE (external/boringssl/src/ssl/tls_record.cc:579 0x7575253060:0x00000001)
    error:1000009a:SSL routines:OPENSSL_internal:HANDSHAKE_FAILURE_ON_CLIENT_HELLO (external/boringssl/src/ssl/handshake_client.cc:893 0x7572f330ab:0x00000000)
        at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
06-29 22:49:31.927 9698-9724/? W/System.err:     at com.android.org.conscrypt.SslWrapper.doHandshake(SslWrapper.java:374)
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:217)
        ... 6 more

Может кто-нибудь подсказать, пожалуйста, что я делаю не так.

Я использую самозаверяющий сертификат для обеспечения безопасности веб-сокета (WSS). Будем благодарны за образец кода.

...