JMeter和可选的SSL客户端证书

时间:2013-01-30 15:42:02

标签: ssl-certificate jmeter

我正在使用涉及SSL客户端证书的JMeter 2.8设置测试计划。测试计划大致包括对server1和server2的两次https调用。

棘手的部分是对server1的调用不应该使用SSL客户端身份验证(尽管服务器正在请求),而对server2的调用必须使用SSL客户端身份验证。

目前,只要我向JMeter提供密钥库,所有https呼叫都会发送SSL证书,导致对server1的呼叫失败。

我目前尝试了两种方法:

  1. 我从JMeter命令行中删除了-Djava.net.ssl.keyStore=xxx并使用BeanShell或BSH预处理器在调用server2之前设置它但是它不起作用并且对服务器2的调用失败,好像没有密钥库那样已被指定。
  2. 我尝试使用Keystore管理配置程序在调用server1之前指定一个不存在的键,但是当我在商店中的最后一个证书之后放置开始和结束索引时,JMeter仍然会在商店中发送第一个证书。 / LI>

1 个答案:

答案 0 :(得分:8)

您可以做的是:

  • 向jmeter添加以下JVM属性:

    -Djavax.net.ssl.keyStore=<path to folder containing keystore>/keystore.jks       
    
    -Djavax.net.ssl.keyStorePassword=password if any
    
  • 使用Keystore Configuration

  • 在user.properties中设置:

    https.use.cached.ssl.context=false
    
  • 将HC4Impl用于必须发送客户端证书的采样器

  • 将JavaImpl用于不能发送它的那个(这是一种技巧,我必须说我不明白为什么如果服务器请求它就不能发送客户端证书)