秒懂HTTPS接口(JMeter压测篇)

本文详细介绍使用JMeter进行HTTPS接口的压力测试方法,包括录制HTTPS请求及手动配置证书的步骤,帮助读者掌握HTTPS压测技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

使用JMeter压测HTTPS接口比较简单,只需要预先处理SSL证书认证,后面就是压测HTTP接口的通用步骤。

HTTPS连接证书来验证浏览器和WEB服务器之间的连接。通过HTTP连接时,服务器会将证书提供给浏览器。为了对证书进行身份验证,浏览器会检查服务器证书是否链接到其内置根CA之一的证书颁发机构(CA)签名,详细请参考秒懂HTTPS接口(原理篇)

二、JMeter压测

目前主要两种方式:

  • 录制HTTPS(适用购买的CA证书)
  • 手动配置证书(均适用)

1、录制HTTPS

1.1、大致原理
请求
解析
响应
请求
生成
响应
浏览器
JMeter代理服务
JMeter录制组件
Web服务端
本地证书

JMeter录制器通过浏览器访问其代理服务器,由代理服务器根据访问解析后生成HTTP Sampler的方式充当了浏览器的角色,于是当建立代理服务器连接后,浏览器会直接将代理服务器当做目标服务器。这时候它就会向代理服务器索要数字证书,JMeter通过生成一个本地的CA证书来完成这个与浏览器建立HTTPS连接的过程。
然后JMeter使用自己的证书拦截来自浏览器的HTTPS连接,实际上就是JMeter伪装成目标服务器。

1.2、具体步骤

打开JMeter在菜单栏上选择录制模板
在这里插入图片描述

生成完整的测试计划
在这里插入图片描述

HTTP Request Default中输入域名/IP地址,这里以github.com示例
在这里插入图片描述

返回HTTP(S) Test Script Recorder,然后单击启动按钮
在这里插入图片描述

这时候已经启动JMeter代理服务器,用于拦截浏览器请求。这时候会在jmeter_home/bin文件夹中生成ApacheJMeterTemporaryRootCA.crt文件
在这里插入图片描述

在这里插入图片描述
JMeter生成的CA证书默认情况是不被浏览器信任的,所以我们需要安装其为受信任的证书,这里我以Mac系统示例。
在这里插入图片描述
在这里插入图片描述

然后就是配置浏览器使用JMeter代理了,这里我以Chrome示例。

打开"设置"
在这里插入图片描述

打开"系统"菜单
在这里插入图片描述
在这里插入图片描述

设置代理
在这里插入图片描述

最后,在浏览器输入URL地址,JMeter会生成录制的请求。
在这里插入图片描述

2、手动配置证书

从浏览器导出站点证书(一般是单向证书,即服务器不限制客户端),此处以Window系统Chrome浏览器示例
在这里插入图片描述
在这里插入图片描述
证书导出为DER格式
在这里插入图片描述

带有后缀扩展名的证书文件:
*.DER *.CER : 这样的证书文件是二进制格式,只含有证书信息,不包含私钥。
.CRT : 这样的文件可以是二进制格式,也可以是文本格式,一般均为文本格式,功能与.DER/.CER相同。
*.PEM : 一般是文本格式,可以放证书或私钥,或者两者都包含。 *.PEM如果只包含私钥,那一般用 *.KEY代替。
*.PFX *.P12 是二进制格式,同时含证书和私钥,一般有密码保护

在JDK的bin目录下通过keytool把证书导入秘钥文件.strore

C:\Program Files\Java\jdk1.8.0_111\bin>keytool -import -alias tomcat -file d:/tomcat.cer -keystore d:/tomcat.keystore
输入密钥库口令:
再次输入新口令:
所有者: CN=zuozewei, OU=7DGroup, O=7D, L=ChaoYan, ST=BeiJing, C=CN
发布者: CN=zuozewei, OU=7DGroup, O=7D, L=ChaoYan, ST=BeiJing, C=CN
序列号: 42a28e33
有效期开始日期: Thu Nov 29 23:05:23 CST 2018, 截止日期: Fri Nov 29 23:05:23 CST 2019
证书指纹:
         MD5: 14:0B:55:7A:F3:22:08:D0:B9:62:0D:52:68:6F:53:26
         SHA1: 62:66:3F:76:AE:B0:39:9A:20:B0:32:08:00:5D:9B:74:29:0A:D0:33
         SHA256: 45:A2:50:84:99:A6:74:2C:13:A4:67:88:AC:1C:2D:72:42:61:F0:A3:9E:D2:1E:F9:BF:79:76:E5:64:DF:C1:CD
         签名算法名称: SHA256withRSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 90 A9 84 43 50 99 02 A2   FC B4 0C 33 B0 B6 16 CC  ...CP......3....
0010: C1 4E 80 AD                                        .N..
]
]

是否信任此证书? []:  y
证书已添加到密钥库中

通过JMeter的SSL管理加载store文件
在这里插入图片描述
后面跟压测HTTP接口一样,不过要注意HTTP Request Sampler协议输入https,端口设置为443
在这里插入图片描述

秒懂HTTPS接口系列源码:

  • https://github.com/zuozewei/blog-example/tree/master/Java-api-test/10-https/springboot-https-demo

相关系列:

### 使用 JMeterHTTPS 接口进行测试 #### 准备工作 为了确保能够顺利对 HTTPS 接口进行测试,在开始之前需要确认已安装并配置好最新版本的 Apache JMeter。对于不同版本间的界面差异,建议参考官方文档或社区资源获取最新的指导[^3]。 #### 创建 HTTP 请求采样器 1. 打开 JMeter 后新建一个测试计划。 2. 添加线程组来定义虚拟用户的数量以及这些用户的行为模式。 3. 在线程组内增加 **HTTP 请求默认值** 或者直接添加 **HTTP 请求** 采样器用于指定目标服务器的信息(主机名/IP地址、端口号等),特别注意当涉及 HTTPS 协议时要确保 URL 中包含 `https://` 前缀[^1]。 ```java // 设置HTTPS协议下的URL访问路径 String url = "https://example.com/api"; ``` #### 处理 SSL/TLS 加密连接 由于 HTTPS 是基于 TLS/SSL 的安全传输层协议,因此还需要额外设置以支持加密通信: - 如果被服务使用自签名证书,则需让 JMeter 忽略不受信任的 CA;可以通过修改 jmeter.properties 文件中的相应选项实现这一点,比如设置 `https.socket.protocols=TLSv1.2` 来强制使用特定版本的安全套接字协议[^4]。 - 另一种方法是在启动 JMeter 时通过命令行参数传递 `-Djavax.net.ssl.trustStore=/path/to/truststore.jks -Djavax.net.ssl.trustStorePassword=password` ,从而指向可信存储库的位置及其密码。 #### 参数化与数据驱动测试 利用 CSV Data Set Config 组件可以从外部文件读取变量值,以便于模拟多种输入情况下的响应行为。这有助于提高测试覆盖率,并能更好地反映实际生产环境中的负载特性。 #### 断言机制的应用 为验证 API 返回的结果是否符合预期,可加入诸如 Response Assertion 这样的组件来进行校验。例如检查状态码是否为 200 OK,或者检验 JSON/XML 结果集中是否存在某些关键字等内容。 #### 查看与分析结果 完成上述配置之后即可运行测试并将输出保存至 .jtl 文件中供后续审查。借助监听器如 View Results Tree 能够直观展示每次交互详情,而 Aggregate Report 则提供了汇总统计信息帮助评估整体性能表现[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zuozewei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值