标签归档:Https

Wireshark监控分析Https的交互过程

首先介绍一下Https在Client与Server之间的理论交互过程:

https-tcp

试想,我们期望在网络中传输的数据是被加密的,并且这个数据包在客户端和服务器端都能进行加密和解密,那么需要对称加密算法,客户端和服务端都需要有一个加解密Key(对称加密),对数据包进行加解密,那么这个Key如何产生并在在网络中安全的传递呢?假设这秘钥是有服务端产生,分配给客户端,为了保证安全,需要在派送Key的过程中进行加密,那么客户端在一无所知的情况下,是无法打开这个加密的数据包的,此方案不行。假设我们引入非对称加密算法,把公钥在网络上传输(传给客户端),私钥只保留在服务端,让客户端生成一个加密Key,并把加密Key通过公钥进行加密,加密后的数据发送给服务端,服务端使用私钥解开数据,提取加密Key,这样服务端和客户端以后的交互都可以使用这个加密Key进行数据交互了。
这个过程可以参考:http://www.jianshu.com/p/15703d8c34e9

抓包监控分析:

首先安装抓包工具Wireshark(最新版为2.0.3),Mac OS 10.11版本还需要安装X11,OS X 不再随附 X11,但 XQuartz 项目提供适用于 OS X 的 X11 服务器和客户端库,所以需要下载 XQuartz
打开Wireshark > 捕获 > 选项,选择 本地网卡,开启监控数据捕获。
这里以腾讯云 https://www.dnspod.cn 为例(首次打开此网站,所以可以捕获到证书获取流程),由于本地有很多其他的应用都会进行网络请求,为排除干扰,查询了腾讯云(https://www.dnspod.cn )的IP地址:59.37.116.101,然后在Wireshark 的过滤器中输入:
ip.src==59.37.116.101  or ip.dst==59.37.116.101

表示只监控IP的起始地或者目的地为腾讯云的数据请求,如图所示:

tencent-cloud-https-tcp-all

当然,这里还是可能会有其他tcp流的干扰,找到一个Client Hello 的tcp请求,查看Transmission Control Protool,找到Stream Index 序号,这个Stream Index 是Wireshark标识一次完整的TCP通讯。

继续阅读

Advertisements