HTTPS 大概流程
客户端将自己支持的加密算法发送给服务器,请求服务器证书;
服务器选取一组加密算法,并将证书返回给客户端;
客户端校验证书合法性,生成随机对称密钥,用公钥加密后发送给服务器;
服务器用私钥解密出对称密钥,返回一个响应,HTTPS连接建立完成;
随后双方通过这个对称密钥进行安全的数据通信。
Charles如何抓取https请求的呢?
简单来讲就是 “中间人攻击”
前提: 安装Charles证书且客户端信任了 Charles 自己制作的证书
大概过程:
Charles 假冒客户端,拿到服务器的 CA 证书
Charles 假冒服务器,给客户端发送了一张自己制作的证书,客户端信任该证书
Charles 再次假冒服务器,拿到客户端的对称密钥
Charles 再次假冒客户端,将对称密钥加密发送给服务器,让服务器认为这次通信是没问题的,服务器发送成功响应
最后 Charles 假冒服务器将成功响应发给客户端
建立连接 客户端与 Charles 建立连接,Charles 与服务器建立连接