抓HTTPS报文分组来分析TLS/SSL协议

本文通过追踪TCP流和捕获HTTPS流量,详细分析了TLS/SSL协议的建立过程,包括Client Hello、Server Hello、Certificate、Server Key Exchange、Client Key Exchange、Change Cipher Spec、Encrypted Handshake Message(Finished)等步骤,以及会话恢复的机制,揭示了HTTPS如何确保数据的完整性和机密性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

追踪TCP流

捕获HTTPS流量

Client Hello

Server Hello

Certificate

Certificate extension

Server Key Exchange

Client Key Exchange

Change Cipher Spec

Encrypted Handshake Message(Finished)

捕获会话恢复


追踪TCP流

TLS/SSL建立在应用层和传输层TCP之间,将到达TCP前的数据都进行加密处理,前面做了那么多的工作,握手密钥协商,数字签名防抵赖等,都是为了保证数据的完整性和机密性。HTTP结合TLS/SSL协议就是HTTPS,如果HTTP消息不交由TLS/SSL协议,一旦流量被截获了,最大的问题就是隐私泄露, 如果我们在一个没有部署HTTPS的网站上登陆我们的信息,以HTTP流量方式进行发送,由于明文传输的原因,一旦请求被截获,里面的内容就泄露了。路由选择让这些报文分组经过很多节点设备,在这些节点路由中等待分组转发的报文都有可能被截获然后篡改,虽然TCP能够保证数据正确到达通信双方处,但不能保证数据是正确的没有被篡改的,对于没有使用TLS/SSL的服务器来说,只要收到的HTTP请求格式是正确的,就会给予响应。像下面这样情况:

如果我们在一个HTTP页面传输数据,例如在一个登陆页面,输入自己的用户名和密码并发送给服务器,中途流量被截获了,直接泄露了我们发送的数据,像上图一样。而如果我们在部署了HTTPS的网站上登陆,因为数据在到达TCP前就交由TLS/SSL协议进行加密,之后再发送,所以中间流量被截获后,看到的也是经过加密的密文:

可以看到,用户名和密码都是一串乱码。拿DH密钥协商举例,客户端和服务器端经过密钥协商后得到对方的公钥,使用公钥加密后的密文仅对方的私钥可以解出明文,所以即使在流量发送过程中被截获了,也能保证数据不泄露。

除了数据未加密的问题外,身份校验也是一个问题,在部署了HTTPS的网站中,CA机构会为其签发一张证书,证书里面包含了一些服务器的关键信息,例如服务器公钥,主机名等,CA机构用自己的RSA私钥对该证书进行签名,浏览器因为对CA机构的信任,通常内嵌CA机构的公钥,在身份校验时,服务器向客户端发送自己的证书,浏览器使用CA公钥验证证书签名,成功后,即可使用里面的服务器公钥进行密钥协商。

TLS/SSL协议做的东西很多,前面的日志里也总结了大致的步骤,还有各个子协议,子消息和扩展项,接下来抓一下HTTPS流量,看看一个网址从建立连接开始,到会话恢复等各部分内容,分析下整个TLS的处理过程。

 

捕获HTTPS流量

首先打开一个HTTPS网页,就拿优快云首页为例吧,打开网站后,我们抓取过程中的HTTPS流量,看看使用TLS协议的网站在客户端(浏览器)和服务器端建立连接过程中发送交换的各个子消息:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值