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 客户端,服务器: 开始后续所有加密通讯
相关推荐
kyle~9 小时前
工业以太网协议---EtherCAT
开发语言·c++·网络协议·机器人·ros2
EdmundXjs9 小时前
Claude+qwen3-vl:8B HTTP交互信息解释
http·claude·ollama·qwen3
不会写DN9 小时前
为什么TCP是三次握手?
服务器·网络·网络协议·tcp/ip
涛声依旧393169 小时前
Nginx+Docker 部署HTTPS站点+身份认证 完整实操一键部署脚本
nginx·docker·https
M158227690559 小时前
三格电子 EtherNet/IP 协议网关产品介绍
网络·网络协议·tcp/ip
Jaygee-9 小时前
WordPress 企业官网搭建教程:用 GMSSH 免费配好 HTTPS、WAF 和网站报表
java·数据库·https
pengyi87101510 小时前
HTTP代理连接异常排查,快速解决卡顿、断连问题
网络·网络协议·http
涛声依旧3931610 小时前
运维项目实战:Nginx+Docker 部署HTTPS站点+身份认证
运维·nginx·docker·云原生·容器·https
傻啦嘿哟10 小时前
验证代理是否生效:OpenClaw中查看当前出口IP的3种方法
网络·网络协议·tcp/ip
墨香幽梦客11 小时前
全站HTTPS化实战:SSL证书管理、自动续期与TLS 1.3性能优化详解
性能优化·https·ssl