[Charles]抓取手机 HTTPS 明文数据包

    文/hrscy(简书作者)
    原文链接:http://www.jianshu.com/p/235bc6c3ca77
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

    iOS App默认的UA格式:App名/版本号 CFNetwork/版本号 Darwin/版本号".

    出现 -1012 表示『用户取消了验证过程』,之所以会有这个错误。是知乎 App 使用的第三方库 AFNetworking 在 1.3.3 版本增加了 SSL Pinning 特性,实现中当开发者没有开启 SSL Pinning 同时服务端证书校验又失败时会直接调用:cancelAuthenticationChallenge: 方法,导致 HTTPClient 给出 -1012 错误。知乎 App 在代码中并没有处理这种情况,所以将错误直接弹了出来。

    为什么会出现证书校验失败呢?有两种情况:

    1. 当时知乎的服务端的 SSL 证书信任链的配置存在问题,会导致一些客户端中校验失败(问题已修正)。但我们找了多个系统版本不同型号的 iOS 设备做了测试,一直没能重现截图中现象;

    2. 另一种情况是存在中间人攻击,用户收到了不是知乎颁发的证书。对此我们拜托一名反复出现该问题的用户协助排查。当用 Mobile Safari 访问 https://api.zhihu.com/missing_redirect_uri 时(注意 是 https),确实出现了『此服务器证书不受信任』的提示。但该用户手快点击了『继续』,由于 iOS 7 中手工接受信任证书是不可逆的操作,所以我们也没办法通过该用户确认该证书的详情。我们正在积极联系其他几名反馈的用户,希望能够拿到证书内容的截图。所以,还是请新遇到该现象的用户直接私信我,我和您详细的沟通解决的步骤。

    我使用的 Charles 版本是 3.11.2,获取下载地址可自行百度,我下面要说的是使用 Charles 获取 https 的数据。

    1. 配置 Charles 根证书

    首先打开 Charles:[Charles 启动界面]

    然后如下图操作:

     

    之后会弹出钥匙串,如果不弹出,请自行打开钥匙串,如下图:

    系统默认是不信任 Charles 的证书的,此时对证书右键,在弹出的下拉菜单中选择『显示简介』,点击使用此证书时,把使用系统默认改为始终信任,如下图:

     

    然后关闭,就会发现 charles 的证书已经被信任了,如下图:

    2. 在移动设备上配置证书

    如下图,选择在移动设备上安装 Charles 根证书:

    会弹出一个提示框,如下图:

    进入手机设置界面:

    然后打开手机的浏览器,输入
    charlesproxy.com/getssl 会弹出如下界面:

    点击安装即可,如果出现的不是这个界面,那么把链接换成
    https://www.charlesproxy.com/documentation/additional/legacy-ssl-proxying/,点击安装 itself 后面的 here 就可以了。

    这里以简书为例...,

    此时还是获取不到 https 的数据,各位童鞋不要着急,下面还有操作,接着还是进入 Charles ,如下图操作:

    如下图,勾选Enable SSL Proxying,点击添加,弹出下面的对话框,Host 表示你要抓取的 ip 地址或是链接,Port 填写 443 即可:

    设置完成后,就可以抓取数据啦,如下图:

    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自n0elle's Blog,原文地址《[Charles]抓取手机 HTTPS 明文数据包
    标签:
    喜欢 | 2
    分享:

还没有人抢沙发呢~