admin管理员组

文章数量:1558696

使用fiddler时,有一种情况,即执行https请求时,Host都是tunnel to, URL后边都带着443,这是什么意思呢? 比如:访问 https://www.csdn/ 时,fiddler显示如下:

查看请求头会发现使用了Connect方法,

CONNECT www.csdn.net:443 

Connect方法通常会建议代理(fiddler)与目标服务器建立http tunnel;尽管Connect也可以用于http请求,但是一般是用于SSL通信;
图中也显示了,fiddler提示不能解密HTTPS请求的数据。

默认情况下fiddler是不能解密https请求的,只有开启了Decrypt HTTPS traffic功能时fiddler才能获取到https请求的数据:

中间人劫持攻击

https也不是绝对安全的,如下图所示为中间人劫持攻击,中间人可以获取到客户端与服务器之间所有的通信内容。

中间人截取客户端发送给服务器的请求,然后伪装成客户端与服务器进行通信;将服务器返回给客户端的内容发送给客户端,伪装成服务器与客户端进行通信。
通过这样的手段,便可以获取客户端和服务器之间通信的所有内容。

使用中间人攻击手段,必须要让客户端信任中间人的证书,如果客户端不信任,则这种攻击手段也无法发挥作用。

中间人攻击的预防:
造成中间人劫持的原因是:没有对服务端证书及域名做校验,或者校验不完整,导致把中间人的证书也认为是服务端的证书。okhttp,volley等http框架都有证书及域名校验机制。

fiddler能解密https的原理

是因为设置了信任fiddler的证书:

Tools—–> options—–>https—–>capture https traffic—->decrypt https traffic—>Ignore server certificate errors—->Actions—–>Trust root certificate—->之后都是确定


安装根证书后,可以点击Actions—–>open windows certificate manager查看安装到系统的根证书:

如果不设置这些选项,那么电脑就不会信任fiddler的证书,fiddler就不能解密https请求。

参考:
fiddler使用
HTTPS连接过程以及中间人攻击劫持

本文标签: encryptedtunnelconnectflowstraffic