ssl - 如何设置 Gatling 以使用每个虚拟用户的客户端证书?

标签 ssl gatling scala-gatling

如何设置 Gatling 以使用每个虚拟用户的客户端证书?
我正在为受客户端证书保护的 API 准备 Gatling 模拟,目前我只设法为 Gatling 配置中的所有模拟设置了一个客户端证书

ssl {
  keyStore {
    #type = ""
    file = "C:/client_certificates/00001.pfx"
    password = "password"
    #algorithm = ""
  }
}
但是,我想为不同的虚拟用户提供不同的客户端证书(客户端证书可以从可用客户端证书列表中随机选择或循环选择)。 Galing 文档提到 keymanagerfactoryperUserKeyManagerFactory函数,但没有明确的示例说明如何使用它。

最佳答案

问题中提供的配置键在 io.gatling.core.ConfigKeys.ssl.keyStore 中引用。 .这些值被读取并传递给 Ssl.newKeyManagerFactory创建 KeyManagerFactory .
perUserKeyManagerFactory接受一个函数Long => KeyManagerFactory构造 KeyManagerFactory来自虚拟用户的 ID。

知道我们可以写以下内容:

import io.gatling.commons.util.Ssl

...
.perUserKeyManagerFactory { userId =>
  val fileName = f"C:/client_certificates/$userId%05d.pfx"
  Ssl.newKeyManagerFactory(None, fileName, "password", None)
}
the f interpolator ,我们可以轻松填充userId用零表示 5 位数字。
要循环选择文件,我们可以写${userId % totalNumber}而不是 $userId .

关于ssl - 如何设置 Gatling 以使用每个虚拟用户的客户端证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65086692/

相关文章:

ruby-on-rails-3 - OpenSSL + 自签名证书 = OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

scala - Gatling 传参抛出场景

java - 保存 jdbc 响应并迭代到下一个请求

java - 无法导入 .p12 keystore

ruby-on-rails - 为什么在本地强制使用 https?

git - TortoiseGit "SSL tlsv1 alert protocol version"问题

Gatling:随时保持固定数量的用户/请求

performance - 使用加特林将条件放入 HTTP 请求中

scala - 使用 Gatling 进行调试 - 如果状态为 500,则打印 ln

gatling - 使用元组的内容作为变量 session