2013-02-27 46 views
1

我想确定引用不同keyStore文件以满足我的负载测试需求的最佳方式。具有多个密钥库的Jmeter

我有套不同的证书不同的环境。一个用于开发,一个用于分期。我的目标是使用一个带参数的测试计划来告诉Jmeter要打哪个环境。

如何通过BeanShell的告诉的JMeter使用哪个的keyStore?电流在system.properties设置如下:

javax.net.ssl.keyStore=C:/apache-jmeter-2.9/bin/ssl/myKeyStore.jks 
#The password to your keystore 
javax.net.ssl.keyStorePassword=supersecret 

此外,如果我通过在经由命令行以下操作:

-Djavax.net.ssl.keyStore=path_to_keystore 
-Djavax.net.ssl.keyStorePassword=password_of_keystore 

它覆盖在system.properties文件分配的值?

感谢您的阅读, 的JMeter凡

回答

0

解决的问题!它只是在你的BeanShell脚本一个简单的任务,并添加一些有条件的逻辑,以确定打哪个环境(提示:不要为你的参数使用单引号):

System.setProperty("javax.net.ssl.keystore","path/to/keystore"); 
System.setProperty("javax.net.ssl.keyStorePassword","supersecret"); 
+0

问题未解决。忘了删除system.properties中的值。上面的代码行是不是正确的那些的JMeter – user1951677 2013-03-01 01:06:38

+0

内与beanshell中使用当心,密钥库写在骆驼情况:javax.net.ssl.keyStore – leo 2014-09-18 09:24:54

0

我做了这个工作:

import org.apache.jmeter.util.SSLManager; 
System.setProperty("javax.net.ssl.keyStore","foo.jks"); 
System.setProperty("javax.net.ssl.keyStorePassword","fooPW"); 
SSLManager.getInstance().reset(); 

这是一个代码采样BeanShell中,在线程组要切换到另一个密钥库。于是,在这个线程组,不要忘记将配置像任何SSL配置(HTTPS,Java实现,服务器名称和端口)一个HTTP请求默认值

我在测试计划中使用它,其中所有的测试都是连续执行的,如果不是的话,您应该重做这个解决方案。

有点儿棘手和丑陋是的,但它的工作原理。

+0

FYI。虽然这工作的一个别名,我不能让这个工作多个别名。我必须通过命令行中的密钥库和密码才能工作(Jmeter 3.1)。 – vanteo 2017-05-04 19:47:37