mac环境下使用Charles抓包Https请求

Posted by JackPeng on October 24, 2016

用Charles给Android手机抓包

charles是一款在Mac下常用的截取网络封包工具,对Android Http进行抓包,只要对手机设置代理即可,但对Android Https进行抓包还是破费一些功夫,网上的资料解释的也不清楚,今天在这里总结一下,希望对同样遇到问题的朋友带来一些帮助。

原理

image

Charles实现对Https进行抓包,使用的原理就是中间人技术(man-in-the-middle)。Charles会动态生成一个使用自己根证书签名的证书,Charles接收web服务器的证书,而客户端浏览器/客户端 接收Charles生成的证书,以此客户端和Charles之间建立Https连接,Charles和Web服务器之间建立Https连接,实现对Https传输信息的抓包。如果Charles根证书不被信任则无法建立Https连接,所以需要添加Charles根证书为信任证书。

文/不二先生的世界(简书作者) 原文链接:http://www.jianshu.com/p/3bbf596c9ca6 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

如何使用

1 给Mac安装证书

打开Charles,在Menu选择Help > Install Charles CA SSL Certificate,Keychain Access(钥匙访问串)被打开,我们可以看到Charles Certificate已经被安装,如图:

image

2 信任证书

但此时该证书并没有被信任,双击该行弹出证书详情,选择“Always Trust”。

image

3 给手机安装证书

在3.10以上版本,打开Charles,在Menu选择SSL Proxying > Install Charles Root Certificate on a Mobile Device or Remote Browser,弹出提示框,如图:

image

安装提示进行配置,需要注意的是192.168.0.101是我演示时候的IP,你要改成你自己的IP地址。IP配置之后用手机浏览器打开http://charlesproxy.com/getssl 下载证书。如果是Android设备,选择设置->从储存设备安装。

3.10以下版本:

证书下载地址:

https://www.charlesproxy.com/documentation/additional/legacy-ssl-proxying/

或者

https://www.charlesproxy.com/assets/legacy-ssl/charles.crt

以下将通过简单的两步告诉你手机安装cer文件的方法。 步骤一:请先将数字证书文件“**.cer”文件复制到SD卡的根目录下; 步骤二:进入手机,设置→安全→信任的证书→从设备存储空间安装→“确定”安装cer证书。

4 开启SSL代理功能

在Menu选择Proxy->SSL Proxying Setting,选中Enable SSL Proxying,在Locations里面添加要使用SSL代理的网站,端口号输入443,如果需要匹配所有的HTTPS网站则输入 * 号即可。现在即可拦截Https的数据包。

image