秒懂HTTPS接口(JMeter压测篇)

前言

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

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

JMeter压测

目前主要两种方式:

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

录制HTTPS

大致原理

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

具体步骤

打开JMeter在菜单栏上选择录制模板

生成完整的测试计划

HTTPRequestDefault中输入域名/IP地址,这里以 github.com示例

返回 HTTP(S)TestScriptRecorder,然后单击启动按钮

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

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

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

打开"设置"

打开"系统"菜单

设置代理

最后,在浏览器输入URL地址,JMeter会生成录制的请求。

手动配置证书

从浏览器导出站点证书(一般是单向证书,即服务器不限制客户端),此处以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接口一样,不过要注意 HTTPRequestSampler协议输入https,端口设置为443

秒懂HTTPS接口系列源码:

https://github.com/zuozewei/Springboot-https-demo

相关系列:

秒懂HTTPS接口(原理篇)

秒懂HTTPS接口(实现篇)

秒懂HTTPS接口(接口测试篇)

深圳的同学有兴趣可以了解下:

性能测试专家班(深圳)-12月

本文分享自微信公众号 - 7DGroup(Zee_7DGroup)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏千里行走

devops-1:"测试环境apollo配置服务频繁宕机"的问题解决

异常现象:2019-1-21~2019-1-22测试环境的apollo频繁宕机,大概有4~5次。

9320
来自专栏服务器安全专线

Nginx服务器下使用rewrite重写url以实现伪静态的示例

这篇文章主要介绍了Nginx服务器下使用rewrite重写url以实现伪静态的示例,这里举了Discuz!和WordPress这两个常用的PHP程序,需要的朋友...

17500
来自专栏千里行走

kibana-1:使用timeline构建时间序列图

最常用的需求是根据时间轴画出日志中不同的日志级别(level)的曲线图。ELK体系下的kibana可以很方便的解决这类问题。

55140
来自专栏千里行走

rocketmq1:集群主要结构和监控,以及性能测试与成本控制

官方推荐的部署结构是2master-2slave+2namesrvs,master与slave的同步支持async/sync两种方式。

15820
来自专栏懒人的Linux

安装 ELK 7.1.1

这是一篇搭建 ELK 集群的文章,主要涉及3大组件 elasticsearch、logstash 和 kibana 以及一个日志收集代理 filebeat的安装...

86040
来自专栏千里行走

rocketmq-2:性能测试方案&压测&选型&结论

关注qps和lantency即可,消息丢失需要使用者在开发时处理,比如消息发送加重试机制(这里有讲究,也不是随便写的,也涉及到rocketmq-broker的流...

41920
来自专栏浩Coding

JavaWeb项目或者Tomcat启动报错——找不到jar包的几种解决方法

exception starting filter struts2 unable to load configuration.

1.3K30
来自专栏达达前端

腾讯云服务器搭建Apache/PHP/MySQL环境

在 『服务器角色』 中勾选 Web 服务器(IIS): 在 『角色服务』 中的 应用程序开发 中勾选 CGI:

78120
来自专栏千里行走

kubernetes-8:kibana容器化

http://toutiao.com/item/6699441606832947723/

14320
来自专栏千里行走

rocketmq-3:rocketmq流控/重试机制与应对

本文基于rocketmq-4.3.2版本,不同版本是存在机制差异的,请阅读rocketmq源码。

32230

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励