目录
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协议的网站在客户端(浏览器)和服务器端建立连接过程中发送交换的各个子消息:

可以看到,我们访问一个HTTPS网站时,使用了TLS v1.2版本协议,经历了握手协议过程,
- 首先由客户端发送Client Hello子消息,然后服务器端回应Se
深入解析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如何确保数据的完整性和机密性。
最低0.47元/天 解锁文章
5580





