charles抓https包的原理

我的米 2020-05-29

首先理解Charles抓包的基本原理,就是Charles对于客户端来说是服务器,对于服务端来说是客户端,因此客户端与Charles通信的过程本质上跟客户端与服务端的通信过程没有区别。

Charles把从客户端收到的请求原封不动地转给服务端,Charles在收到服务端的响应后再把这个响应原封不动地转给客户端,

所以考虑正常的客户端与服务端走https协议时的通信过程,前提是客户端需要信任从服务端返回的https证书,通过这个证书把客户端私钥加密传给服务端之后双方用这个证书进行通信。那么在客户端使用Charles代理后,只需考虑客户端跟Charles的关系,Charles这时对客户端来说是服务器(服务器肯定最终能知道真正的客户端请求长什么样),所以客户端实际上只需要信任Charles的https证书就可以保证Charles能够拿到客户端私钥,使Charles能够真正拿到客户端的请求。

所以Charles抓https包的核心点在于客户端与Charles能够进行正常的https通信,Charles需要知道https加密的内容,也就是客户端需要信任Charles的https证书。

当然如果Charles不enable SSL抓包的话这时Charles就相当于一个普通的路由,不需要知道https加密的内容,也就不涉及SSL证书了。

相关推荐