2

我正在尝试确定引用不同 keyStore 文件以满足负载测试需求的最佳方式。

我有不同的环境和不同的证书集。一种用于开发,一种用于分期。我的目标是使用一个带有参数的测试计划来告诉 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-Fan

4

3 回答 3

0

看一下密钥库配置。

您只需使用所有证书创建一个 p12 文件,配置 system.properties 和 jmeter.properties,将配置添加到您的测试计划中,然后开始!

http://jmeter.apache.org/usermanual/component_reference.html#Keystore_Configuration

于 2013-04-09T13:01:20.437 回答
0

问题解决了!这只是 beanshell 脚本中的一个简单赋值,并添加一些条件逻辑来确定要命中哪个环境(提示:不要对参数使用单引号):

System.setProperty("javax.net.ssl.keyStore","path/to/keystore");
System.setProperty("javax.net.ssl.keyStorePassword","supersecret");
于 2013-02-28T19:31:17.143 回答
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这样的代码采样器中,在要切换到另一个密钥库的ThreadGroup中。然后,在这个ThreadGroup中,不要忘记像任何 SSL conf(https、Java 实现、服务器名称和端口)一样配置HTTP 请求默认值。

我在测试计划中使用了它,其中所有测试都是连续执行的,如果没有,你应该重新设计这个解决方案。

有点棘手和丑陋,是的,但它有效。

于 2016-01-28T13:43:31.323 回答