【计算机网络】SSL/TLS加密

1. HTTP 与 HTTPS 的关系

  • HTTP:明文传输,数据可能被中间人窃听或篡改。
  • HTTPS :HTTP + TLS/SSL
    • TLS/SSL 负责加密传输、身份认证和数据完整性。
    • HTTPS 在 TCP 连接上建立 TLS/SSL 会话后,所有 HTTP 请求和响应都通过加密通道传输。

HTTP 和 HTTPS 是应用层协议,TCP 是传输层协议。HTTP 基于 TCP 连接,而 HTTPS 在 HTTP 与 TCP 之间加了 SSL/TLS 加密。

换句话说:

复制代码
浏览器 ↔ TCP ↔ 服务器
  │
 TLS/SSL 加密层
  │
HTTP 请求/响应内容

SSL/TLS 加密结合了对称加密和非对称加密:

  1. 通过握手交换服务器证书和公钥(非对称加密)。
  2. 基于客户端和服务器的随机数生成对称会话密钥 X。
  3. 用服务器公钥加密该会话密钥,安全传输。
  4. 最终用会话密钥 X 对 HTTP 数据进行加密传输。

2. TLS/SSL 四次握手流程

假设客户端为浏览器,服务器为网站:

第一次握手:客户端 Hello

  • 客户端发送:

    • 支持的 TLS 版本
    • 支持的加密算法列表(Cipher Suites)
    • 一个随机数 ClientRandom(生成主密钥用)
  • 目的:告知服务器能力,并提供随机数用于密钥生成。

    Client → Server: ClientHello(TLS版本, Cipher Suites, ClientRandom)


第二次握手:服务器 Hello + 证书

  • 服务器响应:

    • TLS 版本确认
    • 选定加密算法
    • 服务器随机数 ServerRandom
    • 服务器证书(含公钥)
  • 浏览器验证证书合法性(CA 签名、域名匹配、有效期等)

  • 目的:身份认证并提供随机数参与密钥生成。

    Server → Client: ServerHello(TLS版本, Cipher Suite, ServerRandom) + Certificate


第三次握手:密钥交换

  • 客户端生成 预主密钥(Pre-Master Key)

  • 用服务器公钥加密后发送

  • 双方使用公式生成主密钥:

    Master Key = f(Pre-Master Key, ClientRandom, ServerRandom)

  • 主密钥再派生出:

    • 对称加密密钥 X(Session Key):加密 HTTP 数据

    • 消息认证码(MAC)密钥:保证数据完整性

      Client → Server: EncryptedPreMasterKey
      Server → (内部解密): Pre-Master Key → Master Key → Session Key X


第四次握手:确认加密通道

  • 客户端与服务器互发"Finished"消息:

    • 用对称密钥 X 加密
    • 验证握手过程完整性
  • 握手完成后,双方用会话密钥 X 加密 HTTP 数据传输。

    Client → Server: Finished (用X加密)
    Server → Client: Finished (用X加密)


3. 会话建立后的通信(HTTPS 数据传输)

  1. 会话密钥 X 用于加密 HTTP 请求和响应

  2. 浏览器发送:

    Encrypt(X, GET /index.html HTTP/1.1)

  3. 服务器解密处理请求,返回:

    Encrypt(X, HTTP/1.1 200 OK ...)

  4. 所有 HTTP 数据均在 TLS/SSL 加密层传输,外部无法窃听或篡改。


4. 总结流程图(文字版)

复制代码
HTTP请求(明文) 
   │
TLS/SSL 加密通道建立(四次握手):
   1️⃣ ClientHello (ClientRandom)
   2️⃣ ServerHello + Certificate (ServerRandom)
   3️⃣ EncryptedPreMasterKey → Master Key → Session Key X
   4️⃣ Finished (加密验证)
   │
HTTP请求/响应(加密) → 用 X 加密

✅ 重点回顾

  • HTTPS = HTTP + TLS/SSL
  • TLS/SSL 四次握手:
    1. ClientHello
    2. ServerHello + 证书
    3. 交换预主密钥 → 生成主密钥 → 衍生会话密钥 X
    4. 双方确认 Finished
  • 会话密钥 X 用于加密所有 HTTP 数据,保证机密性和完整性
相关推荐
Dwzun1 小时前
基于SpringBoot3+Vue3的油莎豆种植管理系统
java·前端·vue.js·spring boot·后端·python·计算机网络
明天也要努力学习10 小时前
HTTP 协议的基本格式和 fiddler 的用法
网络协议·http·fiddler
Tel1992530800416 小时前
温度湿度信号转WiFi/MQTT/Modbus TCP采集模块 无线传输
网络·网络协议·tcp/ip·工业自动化·工控设备
lazy H19 小时前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408
低慢小uav20 小时前
(已解决)Zynq芯片lwip协议栈,使用tcp作为服务器Service,接收大量数据时,长度接收正常,接收对数据校验,校验和异常分析
网络协议·tcp/ip·fpga开发
|_⊙1 天前
应用层协议HTTP与HTTPS
网络·网络协议·http
byte轻骑兵1 天前
【PBAP】规范精讲[9]: 蓝牙PBAP的互联互通法则——GOEP互操作性要求深度解析
网络协议·人机交互·蓝牙协议·pbap
路由侠内网穿透.1 天前
本地部署开源 WSGI HTTP 服务器 Gunicorn 并实现外部访问
运维·服务器·网络·网络协议·http·开源
箓维1 天前
TCP Socket的基础实现
网络·网络协议·tcp/ip
川石课堂软件测试1 天前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http