12、HTTPS的工作原理(HTTPS建立连接的过程)【中高频】

SSL/TLS 协议基本流程:

  1. 客户端向服务器 索要 并 验证 服务器的公钥。
  2. 双方协商生产「会话秘钥」。
  3. 双方采用「会话秘钥」进行加密通信。

前两步也就是 SSL/TLS 的建立过程,也就是 TLS 握手阶段。 TLS 握手阶段涉及四次通信,使用不同的密钥交换算法,TLS 握手流程也会不一样的,现在常用的密钥交换算法有两种:RSA 算法 (opens new window)和 ECDHE 算法。

TLS 协议建立的详细流程:

  1. 客户端 发起第一次握手

首先,由客户端向服务器发起 加密通信请求,包含以下信息:

(1)客户端支持的 TLS 协议版本,如 TLS 1.2 版本。

(2)客户端支持的密码套件列表,如 RSA 加密算法。

(3)客户端生产的随机数(Client Random)

  1. 服务器 发起第二次握手

服务器收到客户端请求后,向客户端发出响应,包含以下信息:

(1)确认 TLS 协议版本(如果浏览器不支持,则关闭加密通信)和 密码套件列表

(3)服务器生产的随机数(Server Random)

(4)服务器的数字证书(里面有 服务器公钥,它加密的报文只有 服务器私钥 能解)

  1. 客户端 发起第三次握手

客户端收到服务器的回应之后,首先做这两件事:

  • 通过(浏览器或者操作系统中的 )CA 公钥,验证 服务器数字证书的真实性。
  • 从数字证书中取出 服务器的公钥,加密报文
  • 三个随机数(Client Random、Server Random、pre-master key)配合之前协商的加密算法 生成会话秘钥

报文中包含以下信息:

(1)客户端生产的随机数(pre-master key),并用服务器公钥加密(第三个随机数,服务器也继续用这个)

(2)通知服务器 加密通信算法 已改为 会话秘钥

(3)返回所有握手数据的摘要,并结束握手

  1. 服务器发起 第四次握手

服务器收到客户端消息后,

  • 用 服务器私钥 解密,取出随机数
  • 利用三个随机数和协商的加密算法,生成会话密钥

报文中包含以下信息:

(1)通知服务器 加密通信算法 已改为 会话秘钥

(2)返回所有握手数据的摘要,并结束握手

至此,整个 TLS 的握手阶段全部结束。接下来,客户端与服务器 使用普通的 HTTP 协议,只不过用「会话秘钥」加密内容。

相关推荐
游戏开发爱好者81 小时前
带签名时间戳接口的重放与压力测试实战,用动态值在发送前现算签名
网络协议·计算机网络·网络安全·ios·adb·https·压力测试
TechWayfarer1 小时前
批量查IP归属地,在线API、脚本、离线库怎么选?三种方案实测对比
网络·python·网络协议·tcp/ip
小小龙学IT2 小时前
Boost.Beast 深度实战:基于 Asio 的开源 C++ HTTP/WebSocket 协议库
c++·websocket·http
ryan_9965 小时前
MCP Transport 完整指南:stdio 与 Streamable HTTP 到底怎样传消息
网络·网络协议·http
LayZhangStrive9 小时前
后端通识 - 远程服务调用RPC
网络·网络协议·rpc·sentinel·openfeign·远程服务调用
华清远见成都中心10 小时前
FreeRTOS事件组(Event Group)的工作机制分析
服务器·网络·网络协议
tiantianuser11 小时前
NVME-oF IP 设计15 : 适于高速网络存储系统的IP设计1
网络协议·rdma·高速传输·cmac·roce v2
teak_on_my_way13 小时前
外网通过 Nginx 访问 Doris Stream Load:一次 HTTP 307 疑难排查与完整代理方案
运维·数据库·nginx·http
艺术留白13 小时前
MokaTest使用篇-HTTP接口
网络·网络协议·http
bbq粉刷匠14 小时前
HTTP 深度解析
网络·网络协议·http