首页 > 解决方案 > 如何设置 Gatling 以使用每个虚拟用户的客户端证书?

问题描述

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

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

ssl {
  keyStore {
    #type = ""
    file = "C:/client_certificates/00001.pfx"
    password = "password"
    #algorithm = ""
  }
}

但是,我想为不同的虚拟用户提供不同的客户端证书(客户端证书可以从可用客户端证书列表中随机选择或循环选择)。Galing文档提到了 keymanagerfactoryperUserKeyManagerFactory函数,但没有明确的示例说明如何使用它。

标签: sslgatlingscala-gatling

解决方案


问题中提供的配置键在io.gatling.core.ConfigKeys.ssl.keyStore. 这些值被读取并传递给以Ssl.newKeyManagerFactory创建一个KeyManagerFactory.


perUserKeyManagerFactory接受一个从虚拟用户 IDLong => KeyManagerFactory构造 的函数。KeyManagerFactory


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

import io.gatling.commons.util.Ssl

...
.perUserKeyManagerFactory { userId =>
  val fileName = f"C:/client_certificates/$userId%05d.pfx"
  Ssl.newKeyManagerFactory(None, fileName, "password", None)
}

使用插值器f我们可以轻松地userId用零填充 5 位数。

要循环选择文件,我们可以写${userId % totalNumber}而不是$userId.


推荐阅读