问题背景:微信小程序按照正常流程抓包失败,会在burp中提示,部分银行app抓包连接超时,也会出来提示,现在大部分app之类的都会自签证书+应用内验证(单向认证)或当服务器启用了证书双向认证之后,除了客户端去验证服务器端的证书外,服务器也同时需要验证客户端的证书,也就是会要求客户端提供自己的证书,如果没有通过验证,则会拒绝连接,如果通过验证,服务器获得用户的公钥。(双向校验)
解决:
安卓
对于Android 7.0 (API 24) 之后,做了些改动,使得系统安全性增加了,导致:
- APP 默认不信任用户域的证书
- -》之前把Charles的ssl证书,安装到
受信任的凭据 -> 用户
就没用了,因为不受信任了 - 只信任(安装到)系统域的证书
- -》之前把Charles的ssl证书,安装到
对此,总结出相关解决思路和方案:
- (努力想办法)让系统信任Charles的ssl证书
- 作为app的开发者自己:改自己的app的配置,允许https抓包
- 重要提醒:前提是得到或本身有app的源码
- 把证书放到受系统信任的系统证书中去
- 重要提示:前提是手机已root
- 作为app的开发者自己:改自己的app的配置,允许https抓包
- 绕开https不去校验
- 借助于其他(JustTrustMe等)工具绕开https的校验
- 重要提示:需要借助其他XPosed等框架配合才可以
- 借助于其他(JustTrustMe等)工具绕开https的校验
ios
安装完证书后还需要打开信任此根证书即可单向认证的抓包,双向认证还需要在服务器端关闭服务器端的证书认证
https://juejin.cn/post/6844903831579394055#heading-14
https://www.anquanke.com/post/id/190080
https://www.secpulse.com/archives/54027.html
https://juejin.cn/post/6844903809068564493
https://se8s0n.github.io/2018/09/11/HTTP%E7%B3%BB%E5%88%97(%E4%BA%94)/