Java アプレットを使用して wss (Secure Websocket) サーバーに接続しようとしましたが、ssl ハンドシェークが失敗し、有用なログ エントリがありません。
wss://echo.websocket.org に接続すると、ハンドシェイクは正常に機能するため、一般的な Java コード エラーではないと思います。
自分のサーバーに接続しようとすると、HelloDone ビットが送信されます (wireshark によって検証されます) が、接続はハングアップして終了し、ログには記録されません。通常、ログには次のメッセージが表示されます: " *** ServerHelloDone "
「 javax.net.debug=sll」 の Java コンソール ログを参照してくださいhttp://pastebin.com/ZuvKww4J 切り詰められていません。数秒後、tcp 接続タイムアウト メッセージがログに追加されます。
次の Java コードの例を使用します: https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/SSLClientExample.java
しかし、私が使用するキーストアの代わりに:
sslContext.init( null, null, null );
サーバーには、2 つの異なるテスト システムがあります。
- ポート 443 で ha-proxy
- ポート 8443 で stunnel。
さまざまな方法でエラーを特定しようとしました。最初に、stunnel で echo.websocket.org "SSL_RSA_WITH_RC4_128_SHA" と同じ暗号を強制しましたが、成功しませんでした。
次に、ssl 証明書自体がまだ有効かどうかを確認しました。しかし、私のJavaアプレットによるWebブラウザと通常のhttps接続は、サーバー(同じサーバー。ha-proxyまたはstunnel)から受け入れられるため、その時点ですべてが機能しています。