用JMeter录制HTTPS脚本是让JMeter充当中间人代理,解密浏览器与服务器之间的加密流量。因此正确配置并信任JMeter的CA证书是整个流程的关键。
一、准备工作
安装 Java 8 及以上版本。
下载解压JMeter,进入bin目录,双击jmeter.bat(Windows)或运行jmeter(Mac/Linux)。
二、创建测试计划和线程组
右键点击测试计划 - 添加 - 线程(用户) - 线程组。
三、添加HTTP(S) 测试脚本记录器
右键点击测试计划 - 添加 - 非测试元件 - HTTP(S) Test Script Recorder。
配置参数:
端口:如 8888(保证未被占用)。
目的控制器:选择刚才创建的线程组。
分组:建议选在组间添加分隔或不对请求分组。
HTTPS Domains:可留空。
请求过滤:切换到该标签页,点击添加建议的排除自动过滤静态资源。
四、启动代理并信任证书
点击启动,JMeter会在bin目录自动生成证书文件ApacheJMeterTemporaryRootCA.crt(有效期默认 7 天)。点确定后代理运行,现在需要让浏览器信任此证书。
1.Chrome / Edge / IE(Windows 系统证书库)
按Win+R,输入certmgr.msc(当前用户)或certlm.msc(本地计算机,推荐)。
右键 受信任的根证书颁发机构 - 所有任务 - 导入。
浏览选择 ApacheJMeterTemporaryRootCA.crt,完成导入,出现安全警告点“是”。
重启浏览器。
2.Firefox(独立证书库)
地址栏输入 about:preferences#privacy,找到 证书 区域,点击 查看证书。
在 证书颁发机构 标签页点击 导入,选择上述 .crt文件。
勾选 信任该 CA 来标识网站,确定后重启Firefox。
3.Mac 系统
双击 .crt 文件,钥匙串访问会自动打开。
将证书添加到 系统 钥匙串(可能需要密码)。
找到名为ApacheJMeter的证书,双击打开,展开信任,将 使用此证书时设为 始终信任,关闭窗口确定。
五、配置浏览器代理
系统代理:设为127.0.0.1,端口8888。
推荐使用插件:SwitchyOmega(Chrome)或FoxyProxy(Firefox)可快速切换。
移动端录制:手机Wi-Fi代理指向电脑局域网IP + 端口 8888,并在手机上安装同样的 CA 证书。
六、开始录制
确定JMeter记录器处于启动状态。
清除浏览器缓存,在地址栏输入目的HTTPS网址,正常操作。
线程组下会实时生成 HTTP 请求。
如果出现SSLHandshakeException或浏览器提示连接不安全,请检查证书导入和代理设置。
对于证书绑定(Certificate Pinning)的应用,直接录制无效,需另辟蹊径。
七、停止录制和整理脚本
点击停止,立刻关闭浏览器代理,否则无法正常上网。
整理脚本:
删除多余的第三方请求。
添加HTTP Cookie管理器 处理会话。
按需添加HTTP信息头管理器。
添加查看结果树监听器。
对动态参数使用正则表达式提取器或JSON提取器 进行关联。
八、延长证书有效期
编辑bin/jmeter.properties,修改 proxy.cert.validity 为所需天数(如 365)。
删除bin下的ApacheJMeterTemporaryRootCA.crt 和 proxyserver.jks。
重启JMeter并再次启动记录器生成新证书,重新导入一次即可。
九、常见问题和解决
问题: 浏览器报 ERR_CERT_AUTHORITY_INVALID
原因: 未正确信任 CA 证书
解决: 重新导入证书到受信任根,重启浏览器
问题: 录制不到任何请求
原因: 代理未设或端口错误
解决: 检查浏览器代理为 127.0.0.1:8888
问题: 只能看到 CONNECT 请求
原因: HTTPS 未解密,证书未生效
解决: 保证证书为 CA 证书且被完全信任,关闭防火墙干扰
问题: 提示端口占用
原因: JMeter 代理端口被其他程序占用
解决: 换用其他端口,如 9999
按流程即可完成HTTPS脚本的录制,获得明文的请求和响应,方便后续调试和压力测试。