双向认证接口(ssl加密)使用fiddler工具抓取+如何设置jmeter
一、Fiddler抓包加密(ssl)接口
粗略记录下项目接口加密后的操作
1、ios手机
1、PC端安装开发或运维提供的证书(一般有xxx.cer和xxx.p12);
2、iOS手机提供了系统层面的设置,所以在确认证书安装好、代理设置没问题后,点击通用--关于本机,找到证书信任设置,将fiddler证书信任即可。
2、安卓手机
配置代理、安装证书后,往往发现,对app还是死活不能抓包,抓取的数据显示“Tunnel to......443”,如下图:
方法一、众所周知,android 7.0+的系统同时应用设置targetSdkVersion >= 24的话,是因为android 7.0之后的应用是默认只信任系统证书,不信任用户证书,,所以找低于7.0系统的设备正常抓包就可以了
方法二、那就是使用Xposed+JustTrustMe。
-
具体步骤:
①下载virtualxposed和justtrustme.apk
链接:https://pan.baidu.com/s/1qliIu-XAGs4eikd814cn_Q
提取码:love - justtrustme.apk是插件,不会生成桌面图标,需要在virtualxposed的界面安装。
-
使用同样的安装方式安装需要抓包的app,就可以抓包啦
备注:让fiddler不显示tunnel to xxx.xxx.xx.x:443,勾选Hide CONNECTs选项即可(如下图)
fiddler重新生成证书安装包,下载后直接安装即可
链接:https://pan.baidu.com/s/1mVH8gvZrAkU2VHyrzVEuFQ
提取码:l37u
二、jmeter设置
在实际工作中,我们大多数接口都是用的HTTPS来保证安全,使用jmeter测试HTTPS请求是如何配置证书呢?
方法一:最简单的方法,在选项里选择SSL管理器,然后选择相应的证书即可
在弹出的选择框选择证书即可,亲测可以使用.p12证书,因为我们公司用的是p12类型证书,当发起HTTPS请求时,如果设置的有证书密码,会弹窗让你输入证书密码,然后就请求成功了
但如果重启了jmeter,下次请求时还要再次设置证书,还要输入密码,非常不方便,
方法二:在系统中修改配置来解决这个问题,
1、首先把p12证书改成jmeter支持的keystore证书,mac命令:
jmeter自己喜欢的设置:
增加会话的Server IP的显示
如果我们的fiddler没有显示Server IP,那么我们使用Fiddler进行抓包的时候,就不知道该请求是从哪儿返回来的。Httpwatch是有显示server IP功能的,但是httpwatch只能用与IE浏览器。Fiddler确可以做到对任何程序发起的HTTP请求进行捕获(包括一些客户端程序)。
那么我们就可以在CustomRules.JS中添加如下代码即可。
//显示Server IP
public static BindUIColumn("Server IP",60)
function FillServerIpColumn1(oS:Session):String {
return oS.m_hostIP;
}
保存后显示Server IP;
//显示接口请求类型
public static BindUIColumn("Method", 60)
function FillMethodColumn(oS: Session): String {
return oS.RequestMethod;
}