WebSocketException: не удалось получить входной поток сырого сокета: сбой рукопожатия

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

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

 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). Ссылка на образец кода будет принята с благодарностью.

Итак, у вас есть исключение? И какой именно, вы нам не расскажете? И как? И где?

greenapps 29.06.2018 15:20

Я упомянул в самом заголовке.

Prince Gupta 30.06.2018 08:00

Нет никакого смысла использовать один и тот же файл как в хранилище ключей, так и в хранилище доверенных сертификатов.

user207421 30.06.2018 08:55

@EJP Не могли бы вы подробно объяснить .....?

Prince Gupta 30.06.2018 09:06

@greenapps Привет, я добавил журнал ... пожалуйста, посмотрите.

Prince Gupta 30.06.2018 14:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
338
0

Другие вопросы по теме