介绍
HTTPS = HTTP + SSL/TLS
:::tips TLS 是 SSL 的升级版本,现在基本上都在用 TLS
我们知道 HTTPS 是主要利用的是 公私钥
,但是 非对称加密 非常复杂且效率低下,因此在实际生活中我们都是使用 非对称加密 来交换一个密钥,然后后续使用该密钥进行 对称加密
:::
- Client Hello : 客户端向服务器发送
hello
消息, 包括客户端 TLS 版本
和客户端支持的密码套件
以及随机数1
- Server Hello : 服务器发送
Hello
消息, 主要告知:证书``选择的密码套件
随机数2
- Authentication : 浏览器中存储了各种证书颁发机构的证书, 客户端通过自己的颁发它的证书颁发机构对服务器的证书进行身份验证
- Premaster Secret:客户端使用服务器的公钥加密
<font style="color:rgb(33, 37, 41);">随机数3</font>
(公钥: 从服务器给的证书中寻找) - Decryption of Premaster: 服务器使用自己私钥解密
<font style="color:rgb(33, 37, 41);">随机数3</font>
- 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>
生成会话密钥, 从此以后加密和解密都基于这个密钥 - Ready Messages: 客户端和服务器使用
<font style="color:rgb(33, 37, 41);">Session Keys</font>
发送<font style="color:rgb(33, 37, 41);">完成</font>
消息
Wireshark 分析 HTTPS 流量
笔记 | Wireshark 过滤器 |
---|---|
摘取唾手可得的果实的“HTTPS** 参数” : + Request**:列出所有请求 + TLS:全局 TLS 搜索 + TLS 客户端请求 + TLS 服务器响应 + 本地简单服务发现协议 (SSDP) 注意: SSDP 是一种提供网络服务广告和发现的网络协议。 |
+ http.request + tls + tls.handshake.type == 1 + tls.handshake.type == 2 + ssdp |
与TCP的三次握手过程类似,TLS协议也有它的握手过程。前两个步骤包含“Client Hello”和“Server Hello”消息。给定的过滤器显示捕获文件中的初始 hello 数据包。这些过滤器有助于发现 TLS 握手中涉及哪些 IP 地址
Client Hello: (http.request or tls.handshake.type == 1) and !(ssdp)
Server Hello:(http.request or tls.handshake.type == 2) and !(ssdp)
使用“右键单击”菜单添加关键日志文件:
使用 **“编辑 —> 首选项 —> 协议 —> TLS” **菜单添加关键日志文件: