现象
我们在Charles启动了一个8888端口,并将该端口配置在手机的WIFI代理服务器上,
这样就可以抓到手机产生的对外数据包。
Charles是可以抓取HTTPS数据包的,但前提是需要打开HTTPS抓包选项,并安装Charlrs的root根证书。
具体的操作方法可以按照下面文章描述去操作。
https://juejin.cn/post/6844904106255974413
但是,我们全部配置完毕以后,发现手机的浏览器访问百度等网站的数据包是没有问题的,可以正确解析出来,有一部分APP软件也是可以解析的,比如物美多点,但是美团买菜就不行,拼多多也不行。如下
无法解析的站点,显示CONNECT,前面是红色的叉。
不能解析解密的原因
其实通过上面的描述也很明白了不能正常建立连接解密https报文的原因就是证书校验失败。
我们的根证书安装不够完全。
从Android7.0以后,系统允许每个应用可以定义自己的可信CA集。有部分应用默认只会信任系统预装的CA证书,而不会信任用户安装的CA证书(或者说是应用使用的开发框架默认只信任系统证书,因为开发者通常不关心这些配置,也不会去更改他)。而在Android中用户安装的证书都是用户证书,所以无论是Filddler还是Charles我们都只是把他们的根证书安装到了用户证书,这些应用并不使用他们,所以我们的安装的证书是无效的。
处置方法
那又该如何处理呢?
安卓手机如果可以root,使用adb把证书写到系统证书里面就可以了,不能root的安卓没别的好办法。
也可以换苹果iphone,苹果就没这些限制。