9

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

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

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

我目前尝试了两种方法:

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

1 回答 1

8

您可以执行以下操作:

  • 将以下 JVM 属性添加到 jmeter:

    -Djavax.net.ssl.keyStore=<path to folder containing keystore>/keystore.jks       
    
    -Djavax.net.ssl.keyStorePassword=password if any
    
  • 使用密钥库配置

  • 在 user.properties 中设置:

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

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

于 2013-02-04T19:04:14.950 回答