双向认证接口(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。

  1. 具体步骤:

    ①下载virtualxposed和justtrustme.apk   

    链接:https://pan.baidu.com/s/1qliIu-XAGs4eikd814cn_Q
    提取码:love

  2. justtrustme.apk是插件,不会生成桌面图标,需要在virtualxposed的界面安装。
  3.  使用同样的安装方式安装需要抓包的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命令:

keytool -v -importkeystore -srckeystore xxxxxx.p12 -srcstoretype PKCS12 -destkeystore target.keystore -deststoretype JKS
xxxxxx.p12是源文件,target.keystore是转换后的证书名称
输入命令敲回车会让你设置target.keystore证书的密码,这个密码会在下面的配置中用到,会让你二次输入密码确认,然后会让你输入源文件的密码。设置成功后就会在当前文件夹下生产一个target.keystore的证书
2、进入jmeter的bin文件夹,修改system.properties文件
    2.1、把证书放在jmeter的bin文件夹下,我是在bin文件夹下创建了一个cer存放证书,图中使用了相对路径。

 

 

    2.2、设置javax.net.ssl.keyStore值为证书存放位置,javax.net.ssl.keyStorePassword的值为刚设置的证书密码。(注意默认javax.net.ssl.keyStore和javax.net.ssl.keyStorePassword是注释掉的,需要放开)修改完毕保存后重启jmeter,再次请求时就不需要再设置证书啦

 

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;
}

 

posted @ 2022-11-29 14:37  勇~勇  阅读(1098)  评论(0编辑  收藏  举报