当前位置:   article > 正文

运维系列:[网络]从wireshark抓包看百度的https流程_wireshark抓百度的包

wireshark抓百度的包

[网络]从wireshark抓包看百度的https流程




背景

虽然之前在学校学习过《计算机网络》课程,对https有所认识,但是当笔者最近在定位一个网络问题时,发现学习不够深入。为此深入了解了一下https的流程。这里做一下总结和分享。

https原理

http有如下的不足(参考自:【日本】上野 宣《图解HTTP》):

  1. 通信使用明文,内容可能被窃听;
  2. 不验证通信方的身份,因此有可能遭遇伪装;
  3. 无法证明报文的完整性,所有有可能遭篡改。

为了解决这些问题,需要在http上加入加密处理和认证等机制,因此https应运而生。

基于wireshark抓包的分析

首先使用wireshark并且打开浏览器,打开百度(百度使用的是HTTPS加密),随意输入关键词浏览。

我这里将抓到的包进行过滤。过滤规则如下

ip.addr == 115.239.210.27 && ssl
  
  
  • 1
  • 1

这里写图片描述

下面用图来描述一下上面抓包所看到的流程。
这里写图片描述

1. Client Hello

打开抓包的详细,如下。
这里写图片描述

不难看出,这一握手过程,客户端以明文形式传输了如下信息:

  1. 版本信息(TLS 1.2)
  2. 随机数
  3. Session ID(用于加快握手过程,可参考TLS会话复用
  4. 加密套
  5. 压缩算法
  6. 其它一些扩展的(Extension),比如签名算法,服务器名称(本例为sp1.baidu.com);
Server hello

这里写图片描述

这一阶段,服务端返回所选择的协议版本(Version),加密套,压缩算法,随机数,Session ID等;

Change Cipher Spec和Encrypted Handshake Message

从字面上来看,其含义是:更换秘钥规格和加密握手信息。这里感觉不需要进行说明描述。

证书校验过程去哪了呢

细心的笔者在阅读本文时,可能发现了,不是说HTTPS是要验证通信方的身份的吗?可是为什么上面没有看到这个流程呢。

其实啊,这个就是TLS协议的会话缓存机制。引用一下MSDN上的介绍。

Resuming a Secure Session by Using TLS
1. The client sends a “Client hello” message using the Session ID of the session to be resumed.
2. The server checks its session cache for a matching Session ID. If a match is found, and the server is able to resume the session, it sends a “Server hello” message with the Session ID.
Note If a session ID match is not found, the server generates a new session ID and the TLS client and server perform a full handshake.
3. Client and server must exchange “Change cipher spec” messages and send “Client finished” and “Server finished” messages.
4. Client and server can now resume application data exchange over the secure channel.

翻译过来大致含义是:

客户端使用要恢复的会话的会话ID发送“客户端问候”消息。
服务器检查其会话缓存中是否有匹配的会话ID。如果发现匹配,并且服务器能够恢复会话,则发送具有会话ID的“服务器问候”消息。
注意 如果找不到会话ID匹配,服务器将生成一个新的会话ID和TLS客户端和服务器执行完整的握手。
客户端和服务器必须交换“更改密码规范”消息并发送“客户端完成”和“服务器完成”消息。
客户端和服务器现在可以通过安全通道恢复应用程序数据交换。

百度使用了会话缓存的这种机制来加速https握手的速度!但是这个怎么进行配置,笔者没有深究下去,有好资料大家可以推荐给我~~~~

wireshark解密HTTPS消息

笔者在定位过程中,查阅了很多关于wireshark解密HTTPS消息的办法。共享一下。
很明显,https是加密过的,其中涉及到密钥交换算法,常见的2种密钥交换算法有RSA和DH算法。使用DH算法进行密钥交换的几乎不可能解密(不通过pre-master-secret.log的话),具体原因可以参考:为什么Wireshark无法解密HTTPS数据

其它参考资料

除了文中注明的以外,本文还参考了如下资料:
HTTPS协议详解(四):TLS/SSL握手过程(不得不说这篇写的很详细啊!部分内容参考自这里)







mapw1993

[网络]从wireshark抓包看百度的https流程

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号