最終更新:
susatadahiro 2006年11月18日(土) 18:35:56履歴
HTTPサンプラーを使った時は、作成したクライアント証明書(.p12)を
[メニュー]-[オプション]-[SSLマネージャ]で選択するだけでサーバとの通信が可能になりました。
HTTPサンプラー(HTTPClient)ではこの方法ではサーバにアクセスできませんでした。
以下は、この問題を解決するまでの調査ログです。
最終的には解決(暫定案?)までたどり着きました。
- 事前に用意したクライアント証明書
- C:/bin/xampp/apache/conf/ssl/users/web_korogi_cert.p12
- クライアント証明書に設定したパスワード文字列
- ninshou
- アクセス成功
- Httpサンプラー
- .p12ファイルをjmeter.properetiesで指定した。(1行のみ)
javax.net.ssl.keyStore=C:/bin/xampp/apache/conf/ssl/users/web_korogi_cert.p12
- GUIのSSLマネージャは使わない。
- 実行ボタンを押したときにパスワードを訊かれる(ninshouと入力した)
jmeter.log
2006/11/14 00:00:18 INFO - jmeter.threads.JMeterThread: Thread スレッドグループ 1-1 started 2006/11/14 00:00:18 INFO - jmeter.util.SSLManager: KeyStore Type: PKCS 12 2006/11/14 00:00:25 INFO - jmeter.util.SSLManager: JmeterKeyStore Location: C:/bin/xampp/apache/conf/ssl/users/web_korogi_cert.p12 2006/11/14 00:00:25 INFO - jmeter.util.SSLManager: JmeterKeyStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 00:00:25 INFO - jmeter.util.JsseSSLManager: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 00:00:25 INFO - jmeter.util.SSLManager: TrustStore Type: JKS 2006/11/14 00:00:25 INFO - jmeter.util.SSLManager: TrustStore Location: 2006/11/14 00:00:25 INFO - jmeter.util.SSLManager: TrustStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 00:00:25 INFO - jmeter.util.JsseSSLManager: JsseSSLManager installed 2006/11/14 00:00:25 INFO - jmeter.util.JsseSSLManager: WrappedX509Manager: getCertificateChain(xxx.com) 2006/11/14 00:00:25 INFO - jmeter.util.JsseSSLManager: WrappedX509Manager: getPrivateKey: Sun RSA private CRT key, 1024 bits (略) 2006/11/14 00:00:26 INFO - jmeter.threads.JMeterThread: Thread スレッドグループ 1-1 is done
- アクセス成功
- Httpサンプラー
- .p12ファイルをGUIのSSLマネージャで選択した。
- 選択ボタンを押したときにパスワードを訊かれる(ninshouと入力した)
- jmeter.propertiesはいじらない。
jmeter.log
2006/11/14 00:05:40 INFO - jmeter.util.SSLManager: KeyStore Type: PKCS 12 2006/11/14 00:05:44 INFO - jmeter.util.SSLManager: JmeterKeyStore Location: C:\bin\xampp\apache\conf\ssl\users\web_korogi_cert.p12 2006/11/14 00:05:44 INFO - jmeter.util.SSLManager: JmeterKeyStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 00:05:44 INFO - jmeter.util.JsseSSLManager: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 00:05:44 INFO - jmeter.util.SSLManager: TrustStore Type: JKS 2006/11/14 00:05:44 INFO - jmeter.util.SSLManager: TrustStore Location: 2006/11/14 00:05:44 INFO - jmeter.util.SSLManager: TrustStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 00:05:44 INFO - jmeter.util.JsseSSLManager: JsseSSLManager installed 2006/11/14 00:05:48 INFO - jmeter.engine.StandardJMeterEngine: Listeners will be started after enabling running version 2006/11/14 00:05:48 INFO - jmeter.engine.StandardJMeterEngine: To revert to the earlier behaviour, define jmeterengine.startlistenerslater=false 2006/11/14 00:05:48 INFO - jmeter.engine.StandardJMeterEngine: Running the test! 2006/11/14 00:05:48 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(true,local) 2006/11/14 00:05:48 INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group スレッドグループ. Ramp up = 1. 2006/11/14 00:05:48 INFO - jmeter.engine.StandardJMeterEngine: Continue on error 2006/11/14 00:05:48 WARN - jmeter.threads.JMeterThread: jmeterthread.startearlier=true (see jmeter.properties) 2006/11/14 00:05:48 INFO - jmeter.threads.JMeterThread: Thread スレッドグループ 1-1 started 2006/11/14 00:05:50 INFO - jmeter.util.JsseSSLManager: WrappedX509Manager: getCertificateChain(xxx.com) 2006/11/14 00:05:50 INFO - jmeter.util.JsseSSLManager: WrappedX509Manager: getPrivateKey: Sun RSA private CRT key, 1024 bits (略) 2006/11/14 00:05:52 INFO - jmeter.threads.JMeterThread: Thread スレッドグループ 1-1 is done
- アクセス失敗
- Httpサンプラー(HTTPClient)
- .p12ファイルをGUIのSSLマネージャで選択した。
- 選択ボタンを押したときにパスワードを訊かれる(ninshouと入力した)
- jmeter.propertiesはいじらない。
jmeter.log
javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.handleException(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.handleException(Unknown Source) at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source) at java.io.BufferedOutputStream.flushBuffer(Unknown Source) at java.io.BufferedOutputStream.flush(Unknown Source) at org.apache.commons.httpclient.HttpConnection.flushRequestOutputStream(HttpConnection.java:827) at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1975) at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324) at org.apache.jmeter.protocol.http.sampler.HTTPSampler2.sample(HTTPSampler2.java:527) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:658) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:647) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:247) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty at sun.security.validator.PKIXValidator.<init>(Unknown Source) at sun.security.validator.Validator.getInstance(Unknown Source) at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.getValidator(Unknown Source) at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(Unknown Source) at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source) at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source) ... 15 more Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty at java.security.cert.PKIXParameters.setTrustAnchors(Unknown Source) at java.security.cert.PKIXParameters.<init>(Unknown Source) at java.security.cert.PKIXBuilderParameters.<init>(Unknown Source) ... 27 more
ここで
http://forum.java.sun.com/thread.jspa?threadID=580...
ということでstep4へ
the trustAnchors parameter must be non-emptyをgoogleで検索した。
http://forum.java.sun.com/thread.jspa?threadID=580...
System.setProperty("javax.net.ssl.trustStore","samplecacerts"); System.setProperty("javax.net.ssl.trustStorePassword","changeit");こんなような記述が見つかる。つまり、trustStorePasswordというパラメータ名でパスワードを指定することで、non-emptyなパスワードパラメータを設定できて、それによって解決できるっぽい。
ということでstep4へ
- アクセス成功
- Httpサンプラー(HTTPClient)
- .p12ファイルをGUIのSSLマネージャで選択した。
- 選択ボタンを押したときにパスワードを訊かれる(ninshouと入力した)
- jmeter.propertiesには2行追加。
javax.net.ssl.trustStore=C:/jdk1.5.0_07/jre/lib/security/cacerts
- このcacertsファイルにはサーバ証明書を追加している(どのファイルをどのコマンドを使って追加したかは後述する。とても大事だから。)
javax.net.ssl.trustStorePassword=changeit
jmeter.log
2006/11/14 01:02:56 INFO - jmeter.util.SSLManager: KeyStore Type: PKCS 12 2006/11/14 01:02:59 INFO - jmeter.util.SSLManager: JmeterKeyStore Location: C:\bin\xampp\apache\conf\ssl\users\web_korogi_cert.p12 2006/11/14 01:02:59 INFO - jmeter.util.SSLManager: JmeterKeyStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:02:59 INFO - jmeter.util.JsseSSLManager: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:02:59 INFO - jmeter.util.SSLManager: TrustStore Type: JKS 2006/11/14 01:02:59 INFO - jmeter.util.SSLManager: TrustStore Location: C:/jdk1.5.0_07/jre/lib/security/cacerts 2006/11/14 01:02:59 INFO - jmeter.util.SSLManager: TrustStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:02:59 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: xxx.com 2006/11/14 01:02:59 INFO - jmeter.util.JsseSSLManager: INSTALLED 2006/11/14 01:02:59 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: entrustclientca 2006/11/14 01:02:59 INFO - jmeter.util.JsseSSLManager: INSTALLED 2006/11/14 01:02:59 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: verisignclass3g2ca 2006/11/14 01:02:59 INFO - jmeter.util.JsseSSLManager: INSTALLED(略)
2006/11/14 01:03:00 INFO - jmeter.util.JsseSSLManager: JsseSSLManager installed
HTTPサンプラー(HTTPClient)でアクセスできたということは、SOAP/XML-RPCサンプラー(HTTPサンプラー(HTTPclient)を拡張(extend)して作られている)でもOKだろう。ということでstep5へ。
- アクセス成功
- SOAP/XML-RPCサンプラー
- .p12ファイルをGUIのSSLマネージャで選択した。
- 選択ボタンを押したときにパスワードを訊かれる(ninshouと入力した)
- jmeter.propertiesには2行追加。
javax.net.ssl.trustStore=C:/jdk1.5.0_07/jre/lib/security/cacerts
- このcacertsファイルにはサーバ証明書を追加している(どのファイルをどのコマンドを使って追加したかは後述する。とても大事だから。)
javax.net.ssl.trustStorePassword=changeit
- jdkにデフォルトでついてきているcacertのパスワードはchangeitとなっている。
jmeter.log
2006/11/14 01:09:12 INFO - jmeter.util.SSLManager: KeyStore Type: PKCS 12 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: JmeterKeyStore Location: C:\bin\xampp\apache\conf\ssl\users\web_korogi_cert.p12 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: JmeterKeyStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:09:15 INFO - jmeter.util.JsseSSLManager: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: TrustStore Type: JKS 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: TrustStore Location: C:/jdk1.5.0_07/jre/lib/security/cacerts 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: TrustStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:09:15 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: xxx.com 2006/11/14 01:09:15 INFO - jmeter.util.JsseSSLManager: INSTALLED 2006/11/14 01:09:15 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: entrustclientca 2006/11/14 01:09:15 INFO - jmeter.util.JsseSSLManager: INSTALLED 2006/11/14 01:09:15 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: verisignclass3g2ca 2006/11/14 01:09:15 INFO - jmeter.util.JsseSSLManager: INSTALLED(略)
2006/11/14 01:09:15 INFO - jmeter.util.JsseSSLManager: JsseSSLManager installed
ここでわかったこと。
となると、KeyStoreの設定はGUIのSSLマネージャではなくて、jmeter.propertiesで出来るのでは?
ということでstep6で検証してみる。
- GUIのSSLマネージャは、KeyStoreの設定を行っている。
- TrustStoreはjmeter.propertiesにて設定する。
javax.net.ssl.trustStore=C:/jdk1.5.0_07/jre/lib/security/cacertsjavax.net.ssl.trustStorePassword=changeit
2006/11/14 01:09:12 INFO - jmeter.util.SSLManager: KeyStore Type: PKCS 12 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: JmeterKeyStore Location: C:\bin\xampp\apache\conf\ssl\users\web_korogi_cert.p12 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: JmeterKeyStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:09:15 INFO - jmeter.util.JsseSSLManager: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: TrustStore Type: JKS 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: TrustStore Location: C:/jdk1.5.0_07/jre/lib/security/cacerts 2006/11/14 01:09:15 INFO - jmeter.util.SSLManager: TrustStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore
となると、KeyStoreの設定はGUIのSSLマネージャではなくて、jmeter.propertiesで出来るのでは?
javax.net.ssl.keyStore=C:/bin/xampp/apache/conf/ssl/users/web_korogi_cert.p12 javax.net.ssl.keyStorePassword=ninshou
ということでstep6で検証してみる。
- アクセス失敗
- SOAP/XML-RPCサンプラー
- GUIのSSLマネージャは使わない
- jmeter.propertiesでは4行追加。
javax.net.ssl.trustStore=C:/jdk1.5.0_07/jre/lib/security/cacerts javax.net.ssl.trustStorePassword=changeit javax.net.ssl.keyStore=C:/bin/xampp/apache/conf/ssl/users/web_korogi_cert.p12 javax.net.ssl.keyStorePassword=ninshou
jmeter.log
2006/11/14 01:20:17 INFO - jmeter.gui.action.Load: Loading file: C:\bin\jakarta-jmeter-2.2\bin\soap2.jmx 2006/11/14 01:20:17 INFO - jmeter.save.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2 2006/11/14 01:20:17 INFO - jmeter.save.SaveService: Using SaveService properties file version 408187 2006/11/14 01:20:17 INFO - jmeter.protocol.http.sampler.HTTPSampler2: Local host = xxxxx 2006/11/14 01:20:17 INFO - jmeter.protocol.tcp.sampler.TCPSampler: Protocol Handler name=TCPClientImpl 2006/11/14 01:20:17 INFO - jmeter.protocol.tcp.sampler.TCPSampler: Status prefix= 2006/11/14 01:20:17 INFO - jmeter.protocol.tcp.sampler.TCPSampler: Status suffix= 2006/11/14 01:20:17 INFO - jmeter.protocol.tcp.sampler.TCPSampler: Status properties= 2006/11/14 01:20:17 WARN - jmeter.save.SaveService: Could not set up alias JMSSampler java.lang.NoClassDefFoundError: javax/jms/Message 2006/11/14 01:20:17 WARN - jmeter.save.SaveService: Could not set up alias SubscriberSampler java.lang.NoClassDefFoundError: javax/jms/MessageListener 2006/11/14 01:20:17 INFO - jmeter.save.SaveService: Using SaveService properties version 1.8 2006/11/14 01:20:17 INFO - jmeter.save.SaveService: All converter versions present and correct 2006/11/14 01:20:17 INFO - jmeter.protocol.tcp.sampler.TCPClientImpl: Using eolByte=0 2006/11/14 01:20:18 INFO - jmeter.protocol.tcp.sampler.TCPClientImpl: Using eolByte=0 2006/11/14 01:20:33 INFO - jmeter.engine.StandardJMeterEngine: Listeners will be started after enabling running version 2006/11/14 01:20:33 INFO - jmeter.engine.StandardJMeterEngine: To revert to the earlier behaviour, define jmeterengine.startlistenerslater=false 2006/11/14 01:20:33 INFO - jmeter.engine.StandardJMeterEngine: Running the test! 2006/11/14 01:20:33 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(true,local) 2006/11/14 01:20:33 INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group スレッドグループ. Ramp up = 1. 2006/11/14 01:20:33 INFO - jmeter.engine.StandardJMeterEngine: Continue on error 2006/11/14 01:20:33 WARN - jmeter.threads.JMeterThread: jmeterthread.startearlier=true (see jmeter.properties) 2006/11/14 01:20:33 INFO - jmeter.threads.JMeterThread: Thread スレッドグループ 1-1 started 2006/11/14 01:20:34 INFO - jmeter.threads.JMeterThread: Thread スレッドグループ 1-1 is done 2006/11/14 01:20:34 INFO - jmeter.engine.StandardJMeterEngine: Ending thread 0 2006/11/14 01:20:34 INFO - jmeter.engine.StandardJMeterEngine: Stopping test 2006/11/14 01:20:34 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test 2006/11/14 01:20:34 INFO - jmeter.gui.util.JMeterMenuBar: setRunning(false,local) 2006/11/14 01:20:34 INFO - jmeter.engine.StandardJMeterEngine: Test has ended
HTTPレスポンスでのエラーログ
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source) at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source) at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source) at java.io.BufferedOutputStream.flushBuffer(Unknown Source) at java.io.BufferedOutputStream.flush(Unknown Source) at org.apache.commons.httpclient.HttpConnection.flushRequestOutputStream(HttpConnection.java:827) at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1975) at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324) at org.apache.jmeter.protocol.http.sampler.HTTPSampler2.sample(HTTPSampler2.java:527) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:658) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:647) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:247) at java.lang.Thread.run(Unknown Source) Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.validator.PKIXValidator.doBuild(Unknown Source) at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) at sun.security.validator.Validator.validate(Unknown Source) at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) at com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(Unknown Source) ... 22 more Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) at java.security.cert.CertPathBuilder.build(Unknown Source) ... 27 more
読み込む契機が無いようなので、GUIのSSLマネージャを開いてすぐ閉じてみると、keyStoreの情報を読み込んだ。しかし、そのままリクエストを実行すると、ゼロ除算が発生してコケた。
jmeter.log
HTTPサンプラーへのレスポンス
- アクセス失敗
- HTTPサンプラー(HTTPClient)
- GUIのSSLマネージャは使わない
- jmeter.propertiesには4行追加。
javax.net.ssl.trustStore=C:/jdk1.5.0_07/jre/lib/security/cacerts javax.net.ssl.trustStorePassword=changeit javax.net.ssl.keyStore=C:/bin/xampp/apache/conf/ssl/users/web_korogi_cert.p12 javax.net.ssl.keyStorePassword=ninshou
jmeter.log
2006/11/14 01:23:17 INFO - jmeter.gui.action.Load: Loading file: C:\bin\jakarta-jmeter-2.2\bin\soap2.jmx 2006/11/14 01:23:17 INFO - jmeter.save.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2 2006/11/14 01:23:17 INFO - jmeter.save.SaveService: Using SaveService properties file version 408187 2006/11/14 01:23:17 INFO - jmeter.protocol.http.sampler.HTTPSampler2: Local host = ansersusa1 2006/11/14 01:23:17 INFO - jmeter.protocol.tcp.sampler.TCPSampler: Protocol Handler name=TCPClientImpl 2006/11/14 01:23:17 INFO - jmeter.protocol.tcp.sampler.TCPSampler: Status prefix= 2006/11/14 01:23:17 INFO - jmeter.protocol.tcp.sampler.TCPSampler: Status suffix= 2006/11/14 01:23:17 INFO - jmeter.protocol.tcp.sampler.TCPSampler: Status properties= 2006/11/14 01:23:17 WARN - jmeter.save.SaveService: Could not set up alias JMSSampler java.lang.NoClassDefFoundError: javax/jms/Message 2006/11/14 01:23:17 WARN - jmeter.save.SaveService: Could not set up alias SubscriberSampler java.lang.NoClassDefFoundError: javax/jms/MessageListener 2006/11/14 01:23:17 INFO - jmeter.save.SaveService: Using SaveService properties version 1.8 2006/11/14 01:23:17 INFO - jmeter.save.SaveService: All converter versions present and correct 2006/11/14 01:23:17 INFO - jmeter.protocol.tcp.sampler.TCPClientImpl: Using eolByte=0 2006/11/14 01:23:17 INFO - jmeter.protocol.tcp.sampler.TCPClientImpl: Using eolByte=0 2006/11/14 01:23:26 INFO - jmeter.util.SSLManager: KeyStore Type: PKCS 12 2006/11/14 01:23:27 INFO - jmeter.util.SSLManager: JmeterKeyStore Location: C:/bin/xampp/apache/conf/ssl/users/web_korogi_cert.p12 2006/11/14 01:23:27 INFO - jmeter.util.SSLManager: JmeterKeyStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:23:27 INFO - jmeter.util.JsseSSLManager: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:23:27 INFO - jmeter.util.SSLManager: TrustStore Type: JKS 2006/11/14 01:23:27 INFO - jmeter.util.SSLManager: TrustStore Location: C:/jdk1.5.0_07/jre/lib/security/cacerts 2006/11/14 01:23:27 INFO - jmeter.util.SSLManager: TrustStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:23:27 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: xxx.com 2006/11/14 01:23:27 INFO - jmeter.util.JsseSSLManager: INSTALLED 2006/11/14 01:23:27 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: entrustclientca 2006/11/14 01:23:27 INFO - jmeter.util.JsseSSLManager: INSTALLED 2006/11/14 01:23:27 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: verisignclass3g2ca 2006/11/14 01:23:27 INFO - jmeter.util.JsseSSLManager: INSTALLED(略)
2006/11/14 01:23:27 INFO - jmeter.util.JsseSSLManager: JsseSSLManager installed
HTTPサンプラーへのレスポンス
java.net.SocketException: Default SSL context init failed: Get Key failed: / by zero at javax.net.ssl.DefaultSSLSocketFactory.createSocket(Unknown Source) at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:81) at org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:126) at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324) at org.apache.jmeter.protocol.http.sampler.SoapSampler.sample(SoapSampler.java:224) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:658) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:647) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:247) at java.lang.Thread.run(Unknown Source)
- クライアント証明書(.p12形式)はGUIのSSLマネージャで選択する。
- パスワードは選択ボタンを押したときに入力を求められる。
- サーバがまっとうであることを証明するために使うサーバ証明書は、jmeter.propertiesにてjavax.net.ssl.trustStoreで指定する。
- パスワードはjavax.net.ssl.trustStorePasswordで指定する。
c:\jdk1.5.0_07\bin> c:\jdk1.5.0_07\bin>keytool.exe -import -alias xxx -file C:/bin/xampp/apache/conf/ssl/cacert.pem -noprompt -trustcacerts -keystore c:\jdk1.5.0_07\jre\lib\security\cacerts キーストアのパスワードを入力してください: changeit 証明書がキーストアに追加されました。 c:\jdk1.5.0_07\bin>
このcacertsを使ってstep5を試すと、xxxというalias(別名)のサーバ証明書がきっちり読み込まれている様子がjmeter.logに現れます。
2006/11/14 01:44:05 INFO - jmeter.util.SSLManager: KeyStore Type: PKCS 12 2006/11/14 01:44:08 INFO - jmeter.util.SSLManager: JmeterKeyStore Location: C:\bin\xampp\apache\conf\ssl\users\web_korogi_cert.p12 2006/11/14 01:44:08 INFO - jmeter.util.SSLManager: JmeterKeyStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:44:08 INFO - jmeter.util.JsseSSLManager: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:44:08 INFO - jmeter.util.SSLManager: TrustStore Type: JKS 2006/11/14 01:44:08 INFO - jmeter.util.SSLManager: TrustStore Location: C:/jdk1.5.0_07/jre/lib/security/cacerts 2006/11/14 01:44:08 INFO - jmeter.util.SSLManager: TrustStore type: class org.apache.jmeter.util.keystore.DefaultKeyStore 2006/11/14 01:44:08 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: equifaxsecureebusinessca1 2006/11/14 01:44:08 INFO - jmeter.util.JsseSSLManager: INSTALLED 2006/11/14 01:44:08 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: verisignclass1g3ca 2006/11/14 01:44:08 INFO - jmeter.util.JsseSSLManager: INSTALLED 2006/11/14 01:44:08 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: verisignclass2g2ca 2006/11/14 01:44:08 INFO - jmeter.util.JsseSSLManager: INSTALLED 2006/11/14 01:44:08 INFO - jmeter.util.JsseSSLManager: AlwaysTrustManager alias: xxx 2006/11/14 01:44:08 INFO - jmeter.util.JsseSSLManager: INSTALLED(略)
C:\jdk1.5.0_07\bin>openssl x509 -in C:/bin/xampp/apache/conf/ssl/cacert.pem -outform DER -out C:/bin/xampp/apache/conf/ssl/cacert.der C:\jdk1.5.0_07\bin>keytool -import -alias xxx2 -file C:/bin/xampp/apache/conf/ssl/cacert.der -noprompt -trustcacerts -keystore c:/jdk1.5.0_07/jre/lib/security/cacerts キーストアのパスワードを入力してください: changeit 証明書がキーストアに追加されました。
このページへのコメント
jdYvIy Really informative blog article.Really thank you! Cool.
mfslxW Really enjoyed this article.Thanks Again. Keep writing.
こちらのページを参考にクライアント認証を試してみました。
【結果】
・SSLマネージャを使わない方法でのHttpサンプラーによるクライアント認証はできました。
trustStoreの設定は同じ。
keyStoreは指定しなければ、
ユーザホームにある .keystore ファイルが自動的に読み込まれますのでこれを利用。
.keystoreはkeytoolではなくて、
PortecleというGUIのツールを使用し、
秘密鍵を含んだ証明書をimportしました。
この時ポイントなのは、
キーストアーのパスワードと同じパスワードを
キーペアーのパスワードに設定すること。
javax.net.ssl.keyStorePasswordにキーストアーのパスワードを設定する。
以上でSSLマネージャを使わない方法でできました。