9

(私は jmeter-user メーリング リストに同じ質問をしましたが、ここでも試してみたかったので、少なくとも見つけたら答えを更新できます)。

JMeterを使用して、自己署名 SSL 証明書を使用して Tomcat Web アプリケーションをテストするのに問題があります。JMeter は message で SocketException をスローしますUnconnected sockets not implementedJMeter の docsによると、アプリケーションは、自己署名または CA 署名など、あらゆる証明書を受け入れるように設計および作成されています。

以前にこの特定の例外に遭遇した人はいますか?

この証明書をサーバーからエクスポートしてローカル キーストアにインポートしようとしましたが ( keytool -import -alias tomcat -fileを使用)、結果は同じです。

また、javax.net.debug=all を JVM 引数として設定しようとしました ( JSSE リファレンス ガイドでは、これをデバッグ ステップとしてリストしています)。ただし、どこにもデバッグ出力が表示されません。標準出力/エラー以外の場所でこれを期待する必要がありますか?

4

6 に答える 6

12

ほとんどのjavax.net.SocketFactory実装では、パラメーターを持つcreateSocket()すべてのメソッドを抽象として定義します。ただし、次のようなパラメーターのないメソッドがあります。createSocket()

public Socket createSocket() throws IOException {
   throw new SocketException("Unconnected sockets not implemented");
}

したがって、abstract をサブクラス化javax.net.SocketFactoryすると、パラメーターを使用してメソッドをオーバーライドする必要がありますが、パラメーターなしでメソッドをオーバーライドするのは簡単createSocket()です。したがって、コードが を呼び出すと、例外がスローされますcreateSocket()。メソッドをオーバーライドするだけで完了です。:)

于 2015-01-04T10:17:42.790 に答える
3

コードで同じ問題が発生しました(JMeterとは関係ありません)。

私のコードでは、自己定義のSocketFactory. 私が見つけたのは、クラスがusingcom.sun.jndi.ldap.Connectionのいくつかのメソッドを呼び出すことです。呼び出そうとするメソッドの 1 つは、パラメーターなしです。SocketFactoryMethod.invoke()createSocket()

そのようなメソッドを工場に追加すると、すべてうまくいきました。

于 2011-07-05T08:15:11.767 に答える
2

これは適切な答えではなくヒントです: Google の結果をざっと見てみると、例外は通常、createSocket() が呼び出されたときに意図的に例外をスローするデフォルトの SSL ソケット ファクトリの使用を強制するコードによって引き起こされることが示唆されているようです。それ。一部の結果が示唆しているように見えるのは、Java 6 の特定のバージョンのバグが原因で、またはキーストアに間違ったパスまたはパスワードが提供された場合に、問題が発生することがあるということです。

したがって、Java 5 を使用してみてください。また、適切な SSL 証明書を使用する有名なサイトを JMeter で参照してみてください。このようにして、自己署名証明書の仮説をテストできます。

于 2008-09-22T20:30:31.703 に答える
0

これが私の解決策です(Java 1.6)TLS_DHE_暗号を完全に削除し、メソッドcreateSocket()を強制的にオーバーライドします

( https://gist.github.com/hoangthienan/735afb17ffd6955de95a49aa0138dbaa )

于 2016-08-01T09:06:28.630 に答える
0

SSLSocketFactory* のクラスパスを検索してみてください (Eclipse では、これを行うために ctrl-shift-t を実行します)。見つかった場合は、それを Security クラスのプロパティとして設定します。

私の環境では、次の2つが見つかりました。

Security.setProperty("ssl.SocketFactory.provider", "com.ibm.jsse2.SSLSocketFactoryImpl");

また

Security.setProperty("ssl.SocketFactory.provider", "com.ibm.websphere.ssl.protocol.SSLSocketFactory");

(またはあなたが見つけた他のクラスのために)

同様にServerSocketFactory、サーバーソケットが必要な場合。

于 2009-12-08T17:06:44.520 に答える
0

jdk 1.6.0_10 でこれと同様の Web サービスの問題が発生しました。

1.6.0_16 にアップグレードすると、すべてが機能しました。

于 2009-09-03T18:40:09.677 に答える