ssl - 如何设置 Gatling 以使用每个虚拟用户的客户端证书?
问题描述
如何设置 Gatling 以使用每个虚拟用户的客户端证书?
我正在为受客户端证书保护的 API 准备 Gatling 模拟,目前我只设法为 Gatling 配置中的所有模拟设置了一个客户端证书
ssl {
keyStore {
#type = ""
file = "C:/client_certificates/00001.pfx"
password = "password"
#algorithm = ""
}
}
但是,我想为不同的虚拟用户提供不同的客户端证书(客户端证书可以从可用客户端证书列表中随机选择或循环选择)。Galing文档提到了 keymanagerfactory和perUserKeyManagerFactory
函数,但没有明确的示例说明如何使用它。
解决方案
问题中提供的配置键在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
.