私も同じ問題を抱えていました。解決策は見つかりませんでしたが、自己署名証明書を使用できました。
すべての手順を説明します。
- 接続するサーバー証明書をダウンロードします。ブラウザから実行できます (Google Chrome では、ページの URL の近くにあるロックを右クリックします)。
- 次のコマンドでキーストアを作成します (入力したパスワードを記憶します)
keytool -import -alias localhost -file certificate_path -keystore your_new_keystore
WebSocketContainer の代わりに ClientManager を使用することをお勧めします。これにより、ホスト名の検証を上書きできます。
私のコード
System.getProperties().put("javax.net.debug", "all"); //usefull to understand problems
System.getProperties().put(SSLContextConfigurator.KEY_STORE_FILE, your_new_keystore_path);
System.getProperties().put(SSLContextConfigurator.TRUST_STORE_FILE, your_new_keystore_path);
System.getProperties().put(SSLContextConfigurator.KEY_STORE_PASSWORD, the_password_you_entered);
System.getProperties().put(SSLContextConfigurator.TRUST_STORE_PASSWORD, the_password_you_enterede);
ClientManager client = ClientManager.createClient();
SslEngineConfigurator sslEngineConfigurator = new SslEngineConfigurator(new SslContextConfigurator());
sslEngineConfigurator.setHostVerificationEnabled(false); //skip host verification
client.getProperties().put(ClientProperties.SSL_ENGINE_CONFIGURATOR, sslEngineConfigurator);
client.connectToServer(you_class_with_ws_methods, your_ws_uri);
you_class_with_ws_methodsは、WebSocketContainer で使用するものと同じにすることができます 便利なリソース:
https://tyrus.java.net/documentation/1.10/user-guide.html#d0e1128 https://blogs.oracle.com/PavelBucek/entry/securing_websocket_applications_on_glassfish