bilibili

介绍

HTTPS = HTTP + SSL/TLS

:::tips TLS 是 SSL 的升级版本,现在基本上都在用 TLS

我们知道 HTTPS 是主要利用的是 公私钥,但是 非对称加密 非常复杂且效率低下,因此在实际生活中我们都是使用 非对称加密 来交换一个密钥,然后后续使用该密钥进行 对称加密

:::

  1. Client Hello : 客户端向服务器发送 hello消息, 包括客户端 TLS 版本客户端支持的密码套件 以及 随机数1
  2. Server Hello : 服务器发送 Hello消息, 主要告知: 证书``选择的密码套件 随机数2
  3. Authentication : 浏览器中存储了各种证书颁发机构的证书, 客户端通过自己的颁发它的证书颁发机构对服务器的证书进行身份验证
  4. Premaster Secret:客户端使用服务器的公钥加密 <font style="color:rgb(33, 37, 41);">随机数3</font> (公钥: 从服务器给的证书中寻找)
  5. Decryption of Premaster: 服务器使用自己私钥解密 <font style="color:rgb(33, 37, 41);">随机数3</font>
  6. Session Keys Generated: 客户端和服务器端根据 <font style="color:rgb(33, 37, 41);">随机数1</font> <font style="color:rgb(33, 37, 41);">随机数2</font> <font style="color:rgb(33, 37, 41);">随机数3</font>生成会话密钥, 从此以后加密和解密都基于这个密钥
  7. Ready Messages: 客户端和服务器使用 <font style="color:rgb(33, 37, 41);">Session Keys</font> 发送 <font style="color:rgb(33, 37, 41);">完成</font>消息

HTTPS - 图1

Wireshark 分析 HTTPS 流量

https.zip

笔记 Wireshark 过滤器
摘取唾手可得的果实的“HTTPS** 参数” :
+
Request**列出所有请求
+ TLS:全局 TLS 搜索
+ TLS 客户端请求
+ TLS 服务器响应
+ 本地简单服务发现协议 (SSDP)
注意: SSDP 是一种提供网络服务广告和发现的网络协议。
+ http.request
+ tls
+ tls.handshake.type == 1
+ tls.handshake.type == 2
+ ssdp

HTTPS - 图2与TCP的三次握手过程类似,TLS协议也有它的握手过程。前两个步骤包含“Client Hello”和“Server Hello”消息。给定的过滤器显示捕获文件中的初始 hello 数据包。这些过滤器有助于发现 TLS 握手中涉及哪些 IP 地址

  1. Client Hello: (http.request or tls.handshake.type == 1) and !(ssdp)
  2. Server Hello:(http.request or tls.handshake.type == 2) and !(ssdp)

HTTPS - 图3

加密密钥日志文件是一个文本文件,其中包含用于解密加密流量会话的唯一密钥对。当与启用 SSL/TLS 的网页建立连接时,这些密钥对会自动创建(每个会话)。由于这些过程都是在浏览器中完成的,因此您需要配置您的系统并使用合适的浏览器(Chrome 和 Firefox 支持)将这些值保存为关键日志文件。为此,您需要设置一个环境变量并创建 SSLKEYLOGFILE,浏览器会在您浏览网页时将密钥转储到该文件中。SSL/TLS 密钥对是在连接时为每个会话创建的,因此在流量捕获期间转储密钥很重要。否则,无法创建/生成合适的密钥日志文件来解密捕获的流量。我们有两种方法用于添加/删除关键日志文件

使用“右键单击”菜单添加关键日志文件:

HTTPS - 图4

使用 **“编辑 —> 首选项 —> 协议 —> TLS” **菜单添加关键日志文件:

HTTPS - 图5