大家都知道https是加密的通信,下边简述一下简单流程
客户端(打招呼)请求服务端(此时未建立https链接,通信都是明文的),服务端返回自己的服务器证书及相应支持的加密方式列表
客户端检查ca证书是否受信,是的话,继续,不是的话,浏览器会有提示
客户端生成RSA公钥+客户端回话密钥(并加密)给服务器,服务器解密出两个密钥。然后自己生成一个服务端会话密钥(并加密)发送给客户端。客户端解密出来服务端会话密钥。用人话说就是,服务端和客户端交流了一下自己的公钥,然后双方各自生成了一个自己的通信密钥并告知对方,交流完毕,就开始各自用各自的通信密钥发送加密后的数据,正常通信了。
fiddler 抓包的原理就是 在客户端和服务端中间添加一个透明代理,这个代理当然也有自己的CA(受信)证书,对于服务端来说,fiddler就是一个客户端,只要fiddler支持https协议即可;对于客户端来说,fiddler就是一个服务端,我们真正的客户端经过fiddler的时候,客户端需要鉴定fiddler的证书,这一步就是为什么客户端设备(手机、pc、其他终端设备)需要手动安装fiddler的证书。
联想一下,把我们刚刚安装的 “ fiddler证书 ” 替换成某某大公司的证书,恰巧这个大公司又运营了你访问某(https)网站的必经结点。那么你通过https访问的数据,就没得秘密可言了。