Fiddler工具:解决iOS升级后的https请求抓包和转发

最近遇到iOS测试机抓包麻烦的问题,最初刚用上HTTPS时,用fiddler证书安装解决抓包。随着iOS升级,发现抓不到加密包了。甚至测个小需求还无法转发环境,得找开发打不同环境包。昨晚下班路上念念不忘,本着技术没有解决不了问题的精神,上午来抽空搞定,以下为简单的思路

一、抓包问题:

  • 安装证书 略
  • https抓包:iOS9.3是可以直接抓到 握手请求和加密请求,但iOS10.3证书机制略有变化,所以需要手动到设置其它里,手动信任一下即可。

二、转发问题:

具体的实施太琐碎了,这里简单说一下思路,和主要技巧

  • 分析https:先http请求443进行握手验证,通过后再进行业务https加密请求
  • 请求剥离:那么对443请求不做转发,完成握手后https转发给目标服务器,巧的是我调试的服务器之间这样转请求成功了。
  • 脚本实现:通过fiddler的script脚本,根据oSession.HostnameIs 和 oSession.uriContains 来判断是否转发,过滤掉http握手请求不做转发。

注:个人还不能理解透彻的疑问点:

  • 这里转发握手之后的业务请求到另一个服务器能够成功,不知道是否因为我们的服务器对https配置使用的不透彻导致,否则生产服务器的握手秘钥,怎么能拿过来到预上线服务器请求成功?
  • 之前握手请求就开始直接转发失败,没拿到回文,导致中间人欺骗行为中断,可能两台服务器的证书配置不一致导致。
  • 以此我也判断客户端业务https请求也需要和对应的https服务器才能解析成功,否则错位的服务器拿到业务https请求加密文后,如何解密成功?

知识有限,没能理解透彻……