2017-06-12 12 views
0

リーダーダイジェスト版: websocketクライアントを初めて作成しました。 Eclipseを使用するJava 1.8Websocketクライアントhanshakeエラー426アップグレード時

< Session 1c61123c-aa5f-4e59-a49d-b5d3c77c0bbd [598 ms]: Received handshake response: 
< 426 
< connection: Keep-Alive 
< content-length: 29 
< content-type: text/plain; charset=utf-8 
< date: Mon, 12 Jun 2017 16:40:04 GMT 
< server: nginx 

    Exception in thread "main" java.lang.RuntimeException: javax.websocket.DeploymentException: Handshake error. 
     at webSocketExample.WebsocketClientEndpoint.<init>(WebsocketClientEndpoint.java:60) 

詳細: 私は私の内部作業ネットワークに接続され、私が最初に接続して取得のWebSocket接続をしようとしていますが、私の職場の内部ネットワークハンドシェイク・エラー例外を取得し、WebSocketのログ情報が私に語った上でしばらくTCPリセットを送信しています。私のノートパソコンにコードを投げ、私の家のComcast接続のような別のネットワークを介して接続する場合、接続が行われ、私はサーバーからの初期データ応答を受信します。私はその後、私のラップトップを取って、私の社内ネットワークに接続し、私は握手のエラーを取得することに戻ります。

ナレッジベースが少し不足しているので、ここではWebSocket開発を行わないため、内部のセキュリティチームとはまだ解決できませんでした。

私のメインからこのルーチンを呼び出す前に私のプロキシを設定しました。サーバーに接続しているが、リセットを送信していることが確認されています。私は見つけることができたが、まだ何も来ていないすべての投稿/質問/回答を読んだ

try { 

     System.setProperty("javax.net.debug", "all"); 

     ClientManager client = ClientManager.createClient(); 

     final SSLContextConfigurator defaultConfig = new SSLContextConfigurator(); 

     defaultConfig.retrieve(System.getProperties()); 
     SSLEngineConfigurator sslEngine = new SSLEngineConfigurator(defaultConfig, true, false, false); 

     client.getProperties().put(ClientProperties.SSL_ENGINE_CONFIGURATOR, sslEngine); 
     client.getProperties().put(ClientProperties.LOG_HTTP_UPGRADE, true); 

     client.connectToServer(new Endpoint() { 
      @Override 
      public void onOpen(Session session, EndpointConfig config) { 
       session.addMessageHandler(new MessageHandler.Whole<String>() { 
        @Override 
        public void onMessage(String message) { 
         System.out.println(message); 
        } 
       }); 
      } 
     }, ClientEndpointConfig.Builder.create().build(), 
       new URI("wss://api.sandbox.gemini.com/v1/marketdata/BTCUSD")); 

    } catch (Exception e) { 
     throw new RuntimeException(e); 
    } 

:ここで私が実行していたコードです。私は個人的に私たちのネットワーク上で行うことができるものは幾分限られていますが、私たちはきわめて緊密なセキュリティを持っていますが、質問があればセキュリティチームと協力して回答を見つけることができます。

私は仕事用ネットワークとプロキシの内部にある必要があると思いますが、私はそれを解決できませんでした。また、これは、接続して、エラー報告からのログ情報の最後の部分である:DECRYPTION後

パッド入りの平文:LEN = 170

0000: 48 54 54 50 2F 31 2E 31 20 34 32 36 20 55 70 67 HTTP/1.1 426 Upg 
0010: 72 61 64 65 20 52 65 71 75 69 72 65 64 0D 0A 44 rade Required..D 
0020: 61 74 65 3A 20 4D 6F 6E 2C 20 31 32 20 4A 75 6E ate: Mon, 12 Jun 
0030: 20 32 30 31 37 20 31 36 3A 35 30 3A 32 35 20 47 2017 16:50:25 G 
0040: 4D 54 0D 0A 53 65 72 76 65 72 3A 20 6E 67 69 6E MT..Server: ngin 
0050: 78 0D 0A 43 6F 6E 6E 65 63 74 69 6F 6E 3A 20 4B x..Connection: K 
0060: 65 65 70 2D 41 6C 69 76 65 0D 0A 43 6F 6E 74 65 eep-Alive..Conte 
0070: 6E 74 2D 54 79 70 65 3A 20 74 65 78 74 2F 70 6C nt-Type: text/pl 
0080: 61 69 6E 3B 20 63 68 61 72 73 65 74 3D 75 74 66 ain; charset=utf 
0090: 2D 38 0D 0A 43 6F 6E 74 65 6E 74 2D 4C 65 6E 67 -8..Content-Leng 
00A0: 74 68 3A 20 32 39 0D 0A 0D 0A     th: 29.... 
[Raw read (bb)]: length = 58 
0000: 17 03 03 00 35 EC 0F C3 40 0D 18 B4 7B 53 C6 2D [email protected] 
0010: F5 83 29 72 15 51 AC 31 8F 86 52 C9 3C 98 BB F8 ..)r.Q.1..R.<... 
0020: 94 4A D7 3A 6E 17 8C 75 9E 58 25 0B AE B5 2F 13 .J.:n..u.X%.../. 
0030: 8C 44 29 94 2F 4A 46 18 C9 1A     .D)./JF... 
Padded plaintext after DECRYPTION: len = 29 
0000: 55 70 67 72 61 64 65 20 74 6F 20 57 65 62 53 6F Upgrade to WebSo 
0010: 63 6B 65 74 20 72 65 71 75 69 72 65 64   cket required 
> Session 6f920826-4b05-47bd-8cad-212038ff9fad [86 ms]: Sending handshake request: 
> GET wss://api.sandbox.gemini.com/v1/marketdata/BTCUSD 
> Connection: Upgrade 
> Host: api.sandbox.gemini.com 
> Origin: api.sandbox.gemini.com 
> Sec-WebSocket-Key: nkgv7uk/bPSKBiOz5T/Bdg== 
> Sec-WebSocket-Version: 13 
> Upgrade: websocket 

< Session 6f920826-4b05-47bd-8cad-212038ff9fad [600 ms]: Received handshake response: 
< 426 
< connection: Keep-Alive 
< content-length: 29 
< content-type: text/plain; charset=utf-8 
< date: Mon, 12 Jun 2017 16:50:25 GMT 
< server: nginx 

あなたがはるかにこれを得た場合は、おかげで...

ネットワークチームからスニッファ情報を追加する: プロキシサーバーmcweb-a 170.137.249.117を経由して接続Pkt 263を確立します。その後、データを送信します。リセットは、誰もがこの出くわす場合

enter image description here

答えて

0

のPkt 280に送られます。この問題はプロキシサーバーの問題でした。特定のエンドポイントを許容できるものとして追加する必要がありました。そのため、セキュリティチェックのいくつかをスキップします。

関連する問題