如何为JMeter脚本配置客户端证书与密钥解决访问被禁止问题
JMeter自动加载客户端证书解决方案
- 优先修改
system.properties而非jmeter.properties:你之前的配置项属于JVM系统级配置,需要放到JMeter安装目录bin文件夹下的system.properties文件中,而非jmeter.properties。同时注意Windows路径转义,两种写法均可:
javax.net.ssl.keyStoreType=pkcs12 javax.net.ssl.keyStore=C:/certs/mycert.p12 # 或者用双反斜杠 # javax.net.ssl.keyStore=C:\\certs\\mycert.p12 javax.net.ssl.keyStorePassword=你的证书密码
修改完成后必须重启JMeter才会生效。
- 启动参数注入(优先级高于配置文件,适合临时调试):启动JMeter时直接携带系统参数,覆盖配置文件默认值,命令如下:
jmeter -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStore=C:/certs/mycert.p12 -Djavax.net.ssl.keyStorePassword=你的证书密码
- 使用JMeter原生Keystore Configuration元件(适合脚本级证书配置,支持多证书切换):
- 先修改
jmeter.properties,开启配置禁用默认SSL管理器覆盖:
jmeter.ssl.manager.disabled=true- 重启JMeter后,在你的测试计划下新增
配置元件 -> Keystore Configuration,填写以下配置:
- Preload Keystore: 勾选True
- Keystore File Path: 填写你的p12证书完整路径
- Keystore Password: 填写证书密码
- 若你有多个证书需指定别名,可填写Alias of the key to use字段,否则留空即可
- 先修改
- 问题排查方法:启动JMeter时添加SSL debug参数,输出详细证书加载日志定位问题:
jmeter -Djavax.net.debug=ssl
日志保存在JMeterbin目录下的jmeter.log文件中,搜索SSL、keystore相关关键词即可排查路径错误、密码错误、证书损坏等问题。
注:你之前用JSR223 Sampler配置不生效的原因是,JSR223 Sampler执行时JMeter的SSL上下文已经完成初始化,此时修改系统属性不会被读取,只有在SSL上下文初始化前完成的配置才会生效。
内容的提问来源于stack exchange,提问作者bhaskarposhoni
相关产品推荐
相关产品推荐

