解决Charles抓取https报文乱码问题

  1. 安装电脑端证书

    • Help菜单下的路径,下载根证书,并且在钥匙串里设置信任此证书.
      image.png

      image.png
  2. 请求手机证书


    image.png
image.png

在相关的手机wifi配置pc端代理, 打开Safari软件,输入图片中默认的地址chls.pro/ssl,手机会自动跳转到证书下载界面,下载证书

进入通用->描述文件, 安装证书.
进入通用->关于本机->证书信任设置,信任此证书.

image.png

  1. 在菜单Proxy --> SSL Proxying Settings 配置环境:
    image.png

报错

证书安装的时候,iPhone访问:chls.pro/ssl,出现如下错误:

Charles Error Report
Name lookup failed for remote host Charles failed to resolve the name of the remote host into an IP address. Check that the URL is correct.
The actual exception reported was: java.net.UnknownHostException: http: unknown error Charles Proxy, http://www.charlesproxy.com/

需要把电脑DNS设置为114.114.114.114,即可解决


Charles可以抓取https报文的原理

原理就是: 中间人攻击

Charles 作为一个中间人来进行 HTTPS 的代理,让我们检测到浏览器和 SSL web 服务端之间的明文通信。
Charles 把自己变成一个中间人来达到这一目的。你的浏览器是收不到服务端证书的,Charles 会用自己的根证书动态签发一张证书,然后 Charles 来接受服务端的证书,你的浏览器接受 Charles 的证书。

Charles 仍然通过 SSL 与服务端进行通信,但通信是通过浏览器到 Charles,然后在从 Charles 到服务器。

通俗版SSL协议原理:

  • 小明和小王是一对好基友,但是远隔万水千山,只能通过写信来传递消息。俩人每天的信件都是通过邮递员小红来传递的,这俩人每天纸条上明文写着信息,小红也天天看的不亦乐乎,这就是 HTTP。
  • 时间久了,两人发现不行,比如有时候会传递一些不和谐的内容,不希望小红这样的腐女看到;于是小明灵机一动,换成葬爱家族的杀马特火星文来进行通信;小王看后,心领神会。由于转换方式两人都知道,这就是对称加密技术。
  • 然而好景不长,小红勤学苦练,终于练成了火星文十级,又能看懂俩人加密的内容了。俩人必须要更换加密方式,但是更换的加密方式也只能通过小红来传递,所以这个加密的手段很难瞒住小红,这就是 HTTP 的不安全性。
  • 正好小明是一位博学的哲♂学家,他立刻写了封信给小王:把你家储物间箱子的上那把挂锁寄过来!小王看后立刻拿出了那把 82 年的挂锁,把它打开并寄给了小明。这个锁大家都能看到,但只有小王有钥匙,这就是传说中的非对称加密,锁就是公钥,小王的钥匙就是私钥。
  • 小明收到后,仔细研究了那把锁,上面烫着『隔壁老王』四个鎏金大字,正是王家祖传的锁,这就是验证服务端的数字证书。
    于是小明放心的把新的加密方式写在信中,放到盒子里,然后用锁锁上。由于小红没有钥匙,没法查看盒子里到底写了啥,只能原样送过去。小王收到后,用自己的钥匙打开了锁,获得了新的加密方式。这就完成了 SSL 协议的握手。

利用Charles之后的场景:

  • 小红拿到锁以后,先扣着不发,然后掏出了自己的锁寄给小明,这就是 Charles 签发了自己根证书;
  • 小明一看这把锁不是正宗王家的,但是小红家的锁,似乎也可以相信,这就是信任了 Charles 的根证书;
  • 小明把加密方式写进去,然后用小红的锁锁起来了,小红打开之后研究了加密方式,发现两人是在用水星文进行交流,瞬间水星文也达到了十级,然后在换上小王的锁锁上了盒子,还给了小王;
  • 小王毫不知情,之后俩人用水星文进行交流,但内容已经全被小红捕获到了。

参考

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

你可能感兴趣的:(解决Charles抓取https报文乱码问题)