一、HTTP协议和HTTPS协议。
(1) HTTPS协议=HTTP协议+SSL协议,默认端口:443
(2) HTTP协议(HyperText Transfer Protocol):超文本传输协议。默认端口:80,其中包含请求和响应两部分,其中请求包含:请求行、请求头、请求正文,响应包含:响应行、响应头、响应正文。
二、Fiddler截获HTTPS协议数据以及数字证书加密解密原理。
(1) 浏览器向百度发出https握手请求,被Fiddler截获,变成fidller向百度发出握手请求,百度将自己的SSL证书(由CA颁发,里面包含了百度的公钥以及认证中心签名及有效期等信息)进行返回,SSH数字证书被Fiddler截获,Fiddler用CA的公钥解开百度的证书,拿到百度公钥。
(2) Fiddler修改SSL证书相关信息(把:把百度的公钥替换成自己的公钥,把百度证书颁发机构修改成自己颁发等),以达到冒充百度的目的,然后用自己的私钥重新加密百度的SSL数字证书发送给浏览器。
(3) 由Fiddler的根证书生成器FiddlerCertMaker.exe生成Fiddler的根证书并加入浏览器"受信任的根证书颁发机构"列表,所以浏览器可以用Fiddler根证书中的公钥解密伪造的百度SSL数字证书。得到冒充的百度公钥(实际是Fiddler的公钥)。
(4) 浏览器生成随机对称秘钥,用冒充的百度公钥(实际是Fidller的公钥)加密后发出,被Fiddler截获,Fiddler用自己私钥解开带有随机对称密钥的密文,获得通讯的对称秘钥。Fiddler用百度的公钥加密对称秘钥,然后传给百度。
(5) 百度用自己私钥解开对称秘钥,这样双方就能使用对称秘钥加密传输了。
(6) Fiddler收到百度发来的网页密文,由于Fiddler也保存了对称秘钥,所以它可以解开密文,这样我们就能使用Fiddler看到加密的https的明文了,然后Fiddler再次用对称秘钥加密发送给浏览器。浏览器向百度发送密文时也被Fiddler截获,截获后使用对称秘钥解密并显示在Fiddler,然后Fiddler使用对称密钥加密后再发送给百度。如此循环往复。
三、Fiddler截获https请求实操。
前言:理解https协议加密解密原理之后,以下操作能100%的解决fiddler所有证书问题。
(1) 清理环境(首次安装Fiddler不需要清理)
1、卸载Fiddler软件以及根证书生成器Fiddler2 CertMaker。
2、清除C:UsersAdministratorAppDataRoamingMicrosoftCryptoRSA 目录下所有的RSA算法文件,此算法文件和非对称公钥密钥加密相关。
3、清除电脑上的根证书,WIN+R快捷键,输入: certmgr.msc, 然后回车,查找所有fiddler证书,然后删除。
4.清除浏览器上的证书文件 ,以谷歌浏览器为例说明,在浏览器上输入: chrome://settings/,进入[高级]->[管理证书],有"受信任的根证书颁发机构"列表。此处需要仔细查找带有DO_NOT_TRUST_FiddlerRoot的字样,并删除。
(2) 安装并配置Fiddler抓取Https数据报文。
1.下载并安装fiddler,官网下载地址:https://www.telerik.com/download/fiddler
2.下载并安装Fiddler证书生成器,官网下载地址:http://www.telerik.com/docs/default-source/fiddler/addons/fiddlercertmaker.exe?sfvrsn=2
3. 打开Fiddler,点击菜单栏中的Tools—>Options,选择HTTPS页签。勾选Decrypt HTTPS CONNECTs(解密https连接),Fiddler证书生成器会自动判断本机是否安装Fiddler证书,没有则弹出如下证书安装页面。点击”Yes”按钮,在新弹出的窗口中再点击”确定”后则Fiddler证书安装完成。接下来Fiddler就可以抓取Https的数据报文。
![671305b1b6ac304353f1953ba9885c94.png](https://i-blog.csdnimg.cn/blog_migrate/2b1396bb205c9e2ad9e47ccf33a2b126.jpeg)
(3) Fiddler抓取手机端的https协议数据报文。
1、打开Fiddler,点击菜单栏中的Tools—>Options,选择Connections页签。勾选Allow remote computers connnect(允许外部电脑连接)。
![8074e6bc82c49db11584900559747648.png](https://i-blog.csdnimg.cn/blog_migrate/49b4b14cc8e87521f5e4a89742312775.jpeg)
2、保持android手机和电脑在同一网段。如连接同一无线。
3、打开android手机的“设置”->“WLAN”,找到你要连接的无线网络并点击,弹出网络设置对话框,在“代理”处选择“手动”,在“主机名”输入框后面输入127.0.0.1,在“端口”输入框后面输入8888,然后点击“保存”按钮。
4、启动android设备中的浏览器访问百度首页或打开被测App,在fiddler中可以看到抓取到的数据报文了。
四、总结
如果你觉得此文对你有帮助,如果你对此文有任何疑问,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣请拉到最上面关注笔者的名字!
一箭三雕:如果你觉得本文对你有帮助,请关注,赞同,分享三连!谢谢!
作者出处:逍遥子:fiddler如何抓取https请求实现fiddler手机抓包-证书安装失败100%解决
转载声明:欢迎转载,但未经作者同意请保留此段声明,并在文章明显位置给出原文链接。