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 客户端,服务器: 开始后续所有加密通讯
相关推荐
严谨的麻辣烫5 小时前
静态 ISP 代理请求超时怎么排查?Python 与 curl 实战
python·http·requests·1024程序员节·网络排障
FPGA小迷弟8 小时前
FPGA开发Vivado Block Design/Vitis/SDK/xlinx/开发教程,保姆级别,一看就会!
网络协议·tcp/ip·fpga开发·verilog·fpga
FPGA小迷弟9 小时前
基于FPGA实现智能网卡的概念,什么是智能网卡
网络协议·tcp/ip·fpga开发·verilog·fpga
jaysee-sjc15 小时前
【苍穹外卖】Day10:定时任务与 WebSocket 实时提醒实战
java·开发语言·javascript·数据库·vue.js·websocket·网络协议
@Ma15 小时前
Fiddler无法从苹果手机上获取app上https数据包解决方案
智能手机·https·fiddler
幻智星科技16 小时前
我砍掉了FPGA里的ARM核项目反而提前交付了
arm开发·网络协议·fpga开发·硬件架构
cyf3116 小时前
半小时玩转RDMA:从零跑通高速网络通信
网络协议·rdma·高速通信·rocev2·wireshark抓包·ai 智算网络·入门实战
奇牙coding19 小时前
doubao-seed-2.1-pro 报 HTTP 401 怎么办?Key 正确也要检查请求头和端点
网络·数据库·http·ai
砺星Leetx1 天前
工业总线选型与对接实战:PROFINET、EtherCAT、EtherNet/IP、PROFIBUS、Modbus-TCP 与 CC-Link
网络·网络协议·tcp/ip·控制器·国产拧紧系统
李纲明1 天前
WordPress 后台登录马上被踢回登录页:Cookie 域、HTTPS、盐值和页面缓存怎么查
运维·缓存·https·php·wordpress·cookie