VuePress 站点
首页
数学
计算机基础
Java后端
AI大模型
UI设计
首页
数学
计算机基础
Java后端
AI大模型
UI设计
  • 计算机基础
  • 计算机网络应用

    • 课程笔记:TCP三次握手建立连接
    • 课程笔记:TCP三次握手的必要性
    • 课程笔记:TCP协议缺陷与SYN Flood攻击
    • 课程笔记:TCP四次挥手释放连接
    • 课程笔记:TCP四次挥手释放连接的必要性
    • 课程笔记:TCP 报文段格式与 IP 分组
    • 课程笔记:HTTP/2 新特性——二进制分帧
    • 课程笔记:HTTP/2 新特性——多路复用
    • 课程笔记:HTTP/2 新特性——服务器推送(Server Push)
    • 课程笔记:HTTPS 简介与架构图
    • 课程笔记:HTTPS原理与传输层安全协议(TLS)
    • 课程笔记:HTTPS原理——对称加密算法
    • 课程笔记:HTTPS原理——非对称加密算法
    • 课程笔记:HTTPS 原理 —— 数字签名
    • 课程笔记:HTTPS 原理——证书与 CA
    • 课程笔记:完整的HTTPS协议通信流程
    • 课程笔记:HTTPS 协议的性能损耗
    • 课程笔记:TLS False Start 加速 HTTPS
    • 课程笔记:升级 HTTP 协议到 HTTP/2
    • 课程笔记:通过会话恢复加速 HTTPS
    • 课程笔记:OWASP 组织与十大 Web 安全漏洞
    • 课程笔记:XSS 跨站脚本攻击
    • 课程笔记:存储型XSS跨站脚本攻击
    • 课程笔记:XSS攻击窃取Cookie
    • 课程笔记:反射型XSS跨站脚本攻击
    • 课程笔记:DOM型XSS跨站脚本攻击
    • 课程笔记:植入 JS、HTML 代码攻击
    • 课程笔记:XSS攻击的防护策略
    • 课程笔记:XSS攻击的输入环节防护
    • 课程笔记:XSS 劫持 Cookie 的防护策略
    • 课程笔记:XSS 内容输出防护方案
    • 课程笔记:CSP 内容安全策略
    • 课程笔记:CSP 内容安全策略的应用方式
    • 课程笔记:CSRF 跨站请求伪造攻击原理
    • 课程笔记:CSRF 跨站点请求伪造攻击案例
    • 课程笔记:CSRF 跨站请求伪造防护方案
    • 课程笔记:OWASP CSRFTester 工具的原理与使用
    • 课程笔记:点击劫持攻击原理
    • 课程笔记:点击劫持防护方案
    • 课程笔记:URL 跳转漏洞原理与防护
    • 课程笔记:Session 认证与会话劫持
    • 课程笔记:Session固定与Session保持攻击
    • 课程笔记:注入攻击与 OWASP 靶机平台
    • 课程笔记:SQL盲注与ORM注入攻击及防护
    • 课程笔记:XML注入、代码注入、OS命令注入攻击
    • 课程笔记:文件上传漏洞与文件下载/目录浏览漏洞
    • 课程笔记:访问控制与权限访问漏洞
    • 课程笔记:DDoS 分布式拒绝服务攻击原理与防护
    • 课程笔记:CC(Challenge Collapsar)攻击与防护
    • 课程笔记:CDN 的工作原理
    • 课程笔记:CDN的网络架构和术语说明
    • 课程笔记:CDN应用场景与阿里云CDN
    • 课程笔记:如何使用阿里云CDN服务
    • 课程笔记:CDN 刷新与预热
    • 课程笔记:阿里云 CDN 回源配置
    • 课程笔记:CDN 缓存配置
    • 课程笔记:CDN 访问控制与性能优化
  • 计算机网网络

    • 📖 教材介绍与课程导言
    • 📖 1.1 信息时代的计算机网络
    • 📖 1.2 因特网概述
    • 📖 1.3 电路交换、分组交换和报文交换
    • 📖 1.4 计算机网络的定义和分类
    • 📖 1.5 计算机网络的性能指标(1)
    • 📖 1.5 计算机网络的性能指标(2)
    • 📖 1.6.1 常见的三种计算机网络体系结构
    • 📖 1.6.2 计算机网络体系结构分层的必要性
    • 📖 1.6.3 计算机网络体系结构分层思想举例
    • 📖 计算机网络体系结构中的专用术语
    • 📖 物理层概述
    • 📖 物理层下面的传输媒体
    • 📖 传输方式
    • 📖 编码与调制
    • 📖 2.5 信道的极限容量
    • 📖 2.6 信道复用技术
    • 📖 3.1 数据链路层概述
    • 📖 3.2 数据链路层的三个重要问题
    • 📖 3.2.1 封装成帧和透明传输
    • 📖 3.2.2 差错检测
    • 📖 3.2.3 (1) 可靠传输的相关基本概念
    • 📖 3.2.3 (2) 可靠传输的实现机制 - 停止-等待协议(SW)
    • 📖 3.2.3 (3) 可靠传输的实现机制 - 回退N帧协议(GBN)
    • 📖 3.2.3 (4) 可靠传输的实现机制 - 选择重传协议(SR)
    • 📖 3.3 点对点协议 PPP
    • 📖 3.4 共享式以太网
    • 📖 3.4.1 网络适配器和 MAC 地址
    • 📖 3.4.2 (1) CSMA/CD 协议的基本原理
    • 📖 3.4.2 (2) 共享式以太网的争用期、最小帧长和最大帧长
    • 📖 3.4.2 (3) 共享式以太网的退避算法和信道利用率
    • 📖 3.4.3 使用集线器的共享式以太网
    • 📖 3.4.4 在物理层扩展以太网
    • 📖 3.4.5 (1) 网桥的主要结构和基本工作原理
    • 📖 3.4.5 (2) 透明网桥的自学习和转发帧的过程以及生成树协议STP
    • 📖 3.5 交换式以太网
    • 📖 3.5.1 以太网交换机
    • 📖 3.5.2 共享式以太网和交换式以太网的对比
    • 📖 3.6 以太网的MAC帧格式
    • 📖 3.7.1 虚拟局域网 VLAN 概述
    • 📖 3.7.2 虚拟局域网 VLAN 的实现机制
    • 📖 3.8 以太网的发展
    • 📖 3.9.1 802.11 无线局域网的组成
    • 📖 3.9.2 802.11 无线局域网的物理层
    • 📖 3.9.3 (1) 802.11 无线局域网的数据链路层 —— 使用 CSMA/CA 协议(而不使用 CSMA/CD 协议)
    • 📖 CSMA/CA(载波监听多址接入/碰撞避免)协议的基本工作原理
    • 📖 802.11 无线局域网的 MAC 帧格式
    • 📖 网络层概述
    • 📖 网际协议 IP(网际协议)与异构网络互连
    • 📖 IPv4 地址及其编址方法——概述
    • 📖 IPv4 地址的分类编址方法
    • 📖 IPv4 地址的划分子网编址方法
    • 📖 IPv4 地址的无分类编址方法(CIDR)
    • 📖 IPv4 地址的应用规划
    • 📖 IPv4 地址与 MAC 地址
    • 📖 地址解析协议 ARP
    • 📖 IP 数据报的发送和转发流程
    • 📖 IPv4 数据报的首部格式
    • 📖 静态路由配置
    • 📖 因特网的路由选择协议概述
    • 📖 路由信息协议 RIP(路由信息协议)
    • 📖 开放最短路径优先 OSPF(开放最短路径优先)
    • 📖 边界网关协议 BGP(边界网关协议)
    • 📖 路由器的基本工作原理
    • 📖 网际控制报文协议 ICMP(网际控制报文协议)
    • 📖 虚拟专用网 VPN 和网络地址转换 NAT
    • 📖 IP 多播技术的相关基本概念
    • 📖 在局域网上进行硬件多播
    • 📖 在因特网上进行 IP 多播需要的两种协议
    • 📖 网际组管理协议 IGMP
    • 📖 多播路由选择协议
    • 📖 移动 IP 技术概述
    • 📖 IPv6 引进的主要变化
    • 📖 IPv6 数据报的基本首部和扩展首部
    • 📖 IPv6 地址
    • 📖 从 IPv4 向 IPv6 过渡
    • 📖 网际控制报文协议 ICMPv6
    • 📖 软件定义网络 SDN
    • 📖 运输层概述 — 进程间基于网络的通信
    • 📖 TCP/IP 体系结构运输层中的两个重要协议
    • 📖 运输层端口号、复用与分用的概念
    • 📖 UDP 和 TCP 的对比
    • 📖 TCP 报文段的首部格式
    • 📖 "三报文握手"建立 TCP 连接
    • 📖 "四报文挥手"释放 TCP 连接
    • 📖 TCP 的流量控制 (Flow Control)
    • 📖 TCP 的拥塞控制 (Congestion Control) 及与网际层拥塞控制的关系
    • 📖 TCP 可靠传输的实现
    • 📖 TCP 超时重传时间 (RTO) 的选择
    • 📖 TCP 的选择确认 (SACK)
    • 📖 6.1 应用层概述
    • 📖 6.2 客户—服务器方式和对等方式
    • 📖 6.3 动态主机配置协议 DHCP
    • 📖 6.4 域名系统 DNS
    • 📖 6.5 文件传送协议 FTP
    • 📖 电子邮件
    • 📖 万维网 WWW
    • 📖 网络安全概述
    • 📖 密码学相关基本概念
    • 📖 对称密钥密码体制
    • 📖 公钥密码体制
    • 📖 报文摘要和报文鉴别码
    • 📖 数字签名(digital signature)
    • 📖 实体鉴别
    • 📖 密钥分发
    • 📖 访问控制
    • 📖 网络体系结构各层采取的安全措施—物理层和数据链路层
    • 📖 网络体系结构各层采取的安全措施—网络层
    • 📖 网络体系结构各层采取的安全措施—运输层
    • 📖 网络体系结构各层采取的安全措施—应用层
    • 📖 防火墙访问控制与入侵检测系统
    • 📖 常见的网络攻击及其防范
    • 📖 定长子网划分和变长子网划分的二叉树解法

课程笔记:完整的HTTPS协议通信流程

课程名称:计算机网络应用 核心摘要:本讲围绕 HTTPS 实现加密通信的核心——TLS 握手过程展开,详细剖析 ClientHello、ServerHello、证书验证、密钥协商、Finished 验证六大步骤,阐明"明文协商→非对称加密传密钥→对称加密通数据"的设计逻辑,并补充 Session 恢复(Session ID / Session Ticket)机制。

一、 核心概念与原理

  • HTTPS = HTTP + TLS/SSL,在传输层之上为 HTTP 提供加密、完整性、身份认证能力。
  • TLS 握手(Handshake) 是 HTTPS 通信的核心,目的是在客户端与服务端之间安全地协商出一个会话密钥(Session Key),又称对话密钥。
  • 三类加密算法的分工:
    • 对称加密:加解密使用同一密钥,效率高,用于握手结束后的业务数据传输。
    • 非对称加密:公钥加密、私钥解密,安全性强但效率低,用于安全传递预主密钥。
    • 摘要算法:如 SHA,用于校验数据完整性、生成数字签名。
  • 数字证书:由 CA 机构签发,内含公钥、持有者信息、有效期、数字签名等,用于证明服务端身份。
  • 会话密钥的生成:双方各自持有三个随机数,通过相同算法计算得到同一个对称密钥,整个过程密钥本身不在线传输。

二、 技术细节与协议分析

2.1 TLS 握手完整流程(以抓包访问拉勾网为例)

步骤报文名称方向通信方式携带内容作用
1ClientHello客户端 → 服务端明文TLS 版本号、客户端随机数1(Client Random)、支持的加密套件列表打招呼,告知能力
2ServerHello服务端 → 客户端明文选定的加密套件、服务端随机数2(Server Random)、数字证书确认算法、下发证书与随机数
3ClientKeyExchange客户端 → 服务端非对称加密用证书公钥加密的随机数3(Pre-Master Secret)安全传递预主密钥
4(服务端内部处理)服务端非对称解密用私钥解出随机数3双方至此均拥有三个相同随机数
5(双方各自计算)双向本地计算三个随机数 + 约定算法 → 会话密钥生成对称加密密钥,不传输
6ChangeCipherSpec + Finished双向对称加密用会话密钥加密的验证消息验证双方密钥一致、握手安全

2.2 步骤详解

① ClientHello(客户端打招呼)

  • 携带 TLS 协议版本号。
  • 携带客户端生成的随机数1:用于后续会话密钥的生成。
  • 携带 Cipher Suites(加密套件列表):浏览器本地支持的套件,本例中抓到 16 组。
    • 每一组套件由 三部分 组成:对称加密算法 + 非对称加密算法 + 摘要算法。
    • 示例:RSA + AES + SHA,不同长度组合形成多组。
    • 末尾括号中的十六进制(如 0xC02F)为该组套件的编号。
  • 可附带 Session 信息(如之前会话未完全释放)。

② ServerHello(服务端回应)

  • 从客户端的 16 组套件中选定一组(如编号 0xC02F)。
  • 生成并发送服务端随机数2。
  • 下发数字证书(本例证书长度 2809 字节,包含 Subject Public Key Info 即公钥信息)。

③ 客户端验证证书 + 生成随机数3

  • 验证流程:
    1. 证书链(信任链)逐级校验:浏览器/操作系统内置 CA 根证书及中间证书,逐级向上验证。
    2. 签名解密:用内置 CA 公钥解密证书签名,比对摘要,确认未被篡改。
    3. 有效期校验:是否在有效期内。
    4. 域名匹配:证书登记的域名与访问的目标主机(host)是否一致,防止劫持/钓鱼。
  • 验证通过后,客户端生成随机数3(Pre-Master Secret)。
  • 用证书中的公钥加密随机数3,发送给服务端(非对称加密,密文传输)。

④ 服务端解密

  • 服务端用自身私钥解密,获得随机数3(Pre-Master Secret)。
  • 至此,客户端与服务端均拥有三个相同的随机数:
    • 随机数1(Client Random,明文)
    • 随机数2(Server Random,明文)
    • 随机数3(Pre-Master Secret,非对称加密传输)

⑤ 会话密钥生成

  • 双方使用相同的特定算法,将三个随机数计算为会话密钥(Session Key)。
  • 该密钥用于后续对称加密通信。
  • 关键点:密钥本地生成、不在线传输,双方独立计算但结果一致。

⑥ Finished 验证

  • 双方第一次使用会话密钥加密一条消息发送给对方。
  • 若对方能成功解密,证明三方随机数与算法一致,会话密钥相同,握手过程安全。
  • 验证通过后,后续所有 Application Data 均使用会话密钥进行对称加密传输(抓包看到的是密文,无法直接读懂)。

2.3 通信方式演进

明文(协商能力、交换随机数1/2、下发证书)
        ↓
非对称加密(公钥加密随机数3/Pre-Master Secret)
        ↓
本地计算(三个随机数 → 会话密钥)
        ↓
对称加密(会话密钥加密业务数据 + Finished 验证)

2.4 Session 恢复机制

当浏览器异常关闭或网页崩溃后重新访问,为避免完整 TLS 握手带来的开销,有两种恢复方案:

机制原理优点缺点/限制浏览器支持
Session ID每个 Session 有唯一编号,重连时携带该编号,服务端若有记录则复用已协商的会话密钥实现简单Session ID 仅保存在单台服务器,集群环境下请求落到其他节点则失效,需重新握手所有浏览器均支持
Session Ticket不发送 Session ID,而是发送上次会话中服务端下发的加密 Session Ticket(内含会话密钥与加密套件);服务端用私钥解密成功即可复用不依赖服务端内存状态,适配集群协议较新仅 Firefox、Chrome 支持

三、 实践应用与配置命令

本节主要通过 抓包工具(如 Wireshark) 分析访问 拉勾网 时的 TLS 握手包,关键过滤与查看点:

# Wireshark 过滤 TLS 握手报文
tls.handshake.type == 1   # ClientHello
tls.handshake.type == 2   # ServerHello
tls.handshake.type == 11  # Certificate
tls.handshake.type == 16  # ClientKeyExchange

# 关注字段
# - TLS 版本号:tls.handshake.version
# - 客户端随机数:tls.handshake.random
# - 加密套件列表:tls.handshake.ciphersuites
# - 选定套件编号:tls.handshake.ciphersuite(如 0xC02F)
# - 证书公钥信息:certificate.subject_public_key_info

抓包步骤提示:先关闭浏览器再重新打开并访问目标站点,可观察完整握手流程;具体包数取决于服务端是否对 HTTPS 做了优化,但大体步骤一致。

四、 重点与难点提示

  • 三个随机数的作用:Client Random、Server Random、Pre-Master Secret 共同生成会话密钥;第三个随机数用非对称加密传输,是安全性的关键。
  • 会话密钥不传输:双方各自本地计算,仅交换随机数,这是 TLS 设计的精髓。
  • 对称 vs 非对称:握手用非对称(安全传密钥),通信用对称(效率高)。
  • 证书验证四要素:① 证书链逐级校验 ② 签名可解密且摘要一致(防篡改)③ 有效期 ④ 域名匹配(防钓鱼)。
  • Finished 消息的意义:验证会话密钥一致性,确保握手过程未被中间人篡改。
  • Session ID vs Session Ticket:核心区别在于状态是否保存在服务端,集群环境下优先考虑 Session Ticket。
  • 面试要点:能清晰说出六大步骤、三种加密算法的分工、为何最终用对称加密即可。

五、 课后疑问/遗留问题

  1. 会话密钥生成的"特定算法"具体是什么?(课程未展开,后续可结合 RFC 5246 / TLS 1.2 PRF 深入学习)
  2. TLS 1.3 相较 TLS 1.2 在握手流程上有何简化(如 1-RTT / 0-RTT)?
  3. Session Ticket 的加密密钥如何在服务端集群间安全轮换与管理?
  4. 双向 TLS(mTLS)认证流程与本讲单向认证的差异是什么?
最近更新: 2026/6/23 17:18
Contributors: yangwenguang
Prev
课程笔记:HTTPS 原理——证书与 CA
Next
课程笔记:HTTPS 协议的性能损耗