Wireshark抓包分析SSL握手的过程

2022-06-21 15:21:03 浏览数 (1)

刚才用图和文字描述讲解了SSL协议的交互过程HTTPS协议--通过SSL协议实现安全保障的过程和原理

用Wireshark抓包进行详细的讲解。抓的是某机构腾讯课堂的首页。

(因为网页有变动,所以实际抓包抓到的内容与图片不符。但是图片中抓到的包是正确的,讲解的技术也是正确的。)

选择一个TLS的请求,右键--追踪流--TLS。

一、就能看到完整的SSL交互的过程:

上面是TCP三次握手,三次握手之后就进入SSL握手的过程。

二、SSL握手过程

1.第一个SSL握手是客户端向服务器发起的Client Hello消息。

点开这个请求看下内容:

可以看到第四层是TCP协议,源端口是随机的端口,目的端口是443。

SSL协议默认是基于TCP的443端口。HTTP默认是TCP的80端口。所以HTTPS默认是TCP的443端口。

TLS协议在四层之上。TLS协议里面是这样的类型:是一个握手协议,并且是个Client Hello。

支持TLS1.0,TLS1.2。

TLS是SSL协议的一个版本。 SSL协议版本:SSLv3,TLS1.0,TLS1.2

客户端把自己所支持的TLS版本都列在了Client Hello里面。就跟我们的加密套件是一样的。

这个是当前客户端所支持的所有的加密套件

以上就是Client Hello里面所包括的一些重要的消息。

2.Sever开始回复客户端Server Hello了。点开这个请求可以看到:

客户端支持TLS1.0和TLS1.2,服务器从中选了一个共同都支持的版本:TLS1.2。

这是个Server Hello的握手类型。

选一个共同都支持的加密套件:

服务器从客户端发的消息里面,选了版本选了套件。都在Server Hello里面都告诉了客户端。

3.Server Hello之后,服务器发了一个证书。

点开可以看到:

在这个里面主要看的是证书。服务器可能有很多个证书。它会把这些证书都加上都发给客户端。

4.客户端拿到证书去做验证。验证完毕后生成一个本地的随机密码,并且把密码发给服务器。

告诉服务器,我后面的报文开始加密了。点开请求可以看到:

里面可以看到:加密报文类型,会加密密钥。

这个是为了保证数据完整性的一个信息:

从抓包内容来看,客户端发完之后,这个过程完成了。(抓包工具将交互的过程简化了,都放一起了。如果看分开的具体过程就是上篇文章图片画的过程。)

三、握手结束,后面就开始发送HTTP数据包了。

可以看到这个HTTP数据包是加过密的:

http-over-tls意思是:是在tls基础上发的一个HTTP交互报文,是加密的。

0 人点赞