3

そのため、SSL対応サイトをテストするためにJMeterをセットアップし(自己署名証明書ではなく、Geotrustから実際の証明書を取得しています)、Tomcatから直接SSL接続をテストしようとすると問題が発生します。私は得る:

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at com.sun.net.ssl.internal.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:352)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:150)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:575)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
    at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:277)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1060)
    at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1049)
    at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:442)
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271)
    at java.lang.Thread.run(Thread.java:680)

接続しようとするたびに。これは、HttpClient4実装でJMeter2.7を使用しています。これは、Tomcat 7でホストされている私のサービスの1つに対する単純なGETリクエストです(興味のある人は7.0.27)。

これが私のSSLコネクタのTomcat設定です。APR / nativeをインストールしていて、これはEC2上のUbuntu12.04サーバーで実行されていることに注意してください。

<Connector port="8443" maxHttpHeaderSize="8192"
           protocol="HTTP/1.1" 
           URIEncoding="UTF-8" 
           acceptorThreadCount="5"
           maxThreads="400" 
           scheme="https"
           secure="true"
           SSLEnabled="true"
           SSLCipherSuite="ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH"
           SSLHonorCipherOrder="true"
           SSLVerifyClient="optional"
           SSLCertificateFile="/etc/tomcat7/ssl/star.example.com.crt"
           SSLCertificateKeyFile="/etc/tomcat7/ssl/star.example.com.key"
           SSLCertificateChainFile="/etc/tomcat7/ssl/geotrust.crt" />

繰り返しますが、これはJMeterの問題です。ブラウザを使用しても問題なくサイトにアクセスできます。ApacheをTomcatの前に置き、mod_proxyまたはmod_jkのいずれかを使用しても、問題はありません。どんな助けでもいただければ幸いです。

4

1 に答える 1

4

あなたの最後のコメントの後、私はあなたのホストと一致しない証明書とあなたのホストと一致する証明書の問題を再現することができました。

Java 6でバグに直面しているようです。実際、私はJDK6で問題を再現していますが、JMeter2.7を使用したJDK7では再現していません。

これを記録するために、ここでバグを開きました。

そしてこことオレグは私にJDK7についてのヒントをくれました:

構成をさらに分析すると、カスタムtomcat7構成からのものである可能性があります。

SSLCipherSuite="ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH"
SSLHonorCipherOrder="true"

変更を試すこともできますが、とにかくJDK7で動作するので、解決策があります。

問題をテストするためにこの公開されているURLを提案していただきありがとうございます。

ありがとう

于 2012-09-22T09:05:45.797 に答える