代码改变世界

Charles抓包Https最佳实践

  zhenjing  阅读(616)  评论(0编辑  收藏  举报

1.证书安装

  1. 给Mac安装证书。
    打开Charles,在Menu选择SSL Proxying > Install Charles Root Certificate,Keychain Access(钥匙访问串)被打开,我们可以看到Charles Certificate已经被安装,如图:

信任证书
但此时该证书并没有被信任,双击该行弹出证书详情,选择“Always Trust”。(每次安装需要重新设置)


信任证书

给手机安装证书
打开Charles,在Menu选择SSL Proxying > Install Charles Root Certificate on a Mobile Device or Remote Browser,弹出提示框,如图:


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

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

  • 最近iPhone系统更新到ios 10.3后,在公司里用Charles抓包竟然出现了一些问题,https的请求都会失败,提示错误信息为Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate. 然而之前任何问题都没有,并且相关设置都正确:Mac上安装了Charles的根证书,并且设置了始终信任,然后手机上也登录了http://chls.pro/ssl安装了描述文件,一切都按正常程序走的,但是错误始终无法解决

    原因

    设置->通用->描述文件->charles proxy custom root certificate

    虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。

    解决

    设置->通用->关于本机->证书信任设置-> 找到charles proxy custom root certificate然后信任该证书即可.


    2.Remote Map

          Vap请求是加密的,本地抓包看到的是乱码,可以设置远程映射,通过houtu将信息解密,然后返回,此时看到的就是解密解压缩后的数据。

          1.下载Map文件。Map Remote Vap.xml 

          2.配置remote map

        

     

    3,HttpDNS

    开启了Https后抓不到包,禁用httpdns即可

     
    努力加载评论中...
    点击右上角即可分享
    微信分享提示