HTTPS的验证过程

第一步

浏览器给出TLS协议版本号、一个客户端生成的随机数 1(Client random),以及客户端支持的加密方法。(明文通信)


第二步

服务器确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数2(Server random)。(明文通信)

第三步

浏览器确认数字证书有效,然后生成一个新的随机数3(Pre-master secret),并使用数字证书中的公钥加密这个随机数,发给服务器。(使用非对称加密算法)

浏览器确认数字证书有效:浏览器和操作系统内部内置了很多CA机构的证书,是否篡改、是否在有效期内、域名和访问的网站是否匹配。

第四步

服务端使用自己的私钥,获取客户端发来的随机数(即Pre-master secret)。双方就都有三个一模一样的随机数,前两个是明文发送的,最后客户端生成的这个是使用证书中的公钥密文发送的。

第五步

客户端和服务器根据约定的加密方法,使用前面的三个随机数经过特定的算法,生成"对话密钥"(sesionkey),用来加密接下来的整个对话过程

对话密钥,又叫做会话密钥,其实就是将之前通讯中的三个随机数生成一个密钥(对称加密)

三个随机数----->第三个是使用非对称加密---->相同的算法---->会话密钥

第六步

客户端和服务器都会第一次使用会话密钥加密一个消息发送给对方。

https://mermaid.ai/

bash 复制代码
sequenceDiagram
    participant 客户端 as 浏览器
    participant 服务器

    客户端->>服务器: ClientHello<br/>(TLS版本, 支持的加密方法, 随机数1:Client Random)

    服务器-->>客户端: ServerHello<br/>(确认双方使用的加密方法, 随机数2:Server Random, 证书)

    客户端-->>客户端: 验证数字证书有效性

    客户端->>服务器: 使用证书中公钥加密随机数3:Pre-master secret

    服务器-->>服务器: 用私钥解密Pre-master secret
    Note over 客户端,服务器: 此时双方都可获得三份随机数<br/>(Client Random, Server Random, Pre-master secret)

    客户端-->>客户端: 生成会话密钥(session key)
    
    服务器-->>服务器: 生成会话密钥(session key)
    Note over 客户端,服务器: 使用相同算法生成对称会话密钥

    客户端->>服务器: 用会话密钥加密的消息(Finished)
    服务器->>客户端: 用会话密钥加密的消息(Finished)
    Note over 客户端,服务器: 开始后续所有加密通讯
相关推荐
2501_915918415 小时前
Rust 程序抓包解密,rustls 不认系统证书的几种办法
开发语言·后端·网络协议·ios·adb·https·rust
喜欢吃燃面6 小时前
网络协议与通信原理深度解析
网络·网络协议
程序员-李俞7 小时前
Coze 工作流调用异步 HTTP API 完整教程:任务 ID、循环轮询、状态判断与结果 URL 提取
网络·人工智能·网络协议·http·aigc·ai编程·ai写作
非凡大爹7 小时前
IPv6扩展首部:为什么IPv6要把功能从IP首部分离出来?IPv6扩展首部解析
网络协议·tcp/ip·计算机网络
Logintern0916 小时前
网络通讯协议—TCP/IP协议
网络·网络协议·tcp/ip
Zguigo1 天前
lesson43-44深入理解 TCP 可靠传输与流量控制:从机制到实战
网络·网络协议·tcp/ip
SendTomo1 天前
基于WebRTC的P2P文件传输IP暴露是正常现象
网络·网络协议·tcp/ip·webrtc·p2p
熊IT1 天前
HTTP 代理检测工具:快速检查代理可用性、出口 IP 与延迟
网络协议·tcp/ip·http
何以解忧,唯有..1 天前
HTTP 与 HTTPS:从明文传输到安全加密的演进
安全·http·https
今儿敲了吗1 天前
CN——HTTP 工作流程
网络·网络协议·http