SSL/TLS握手过程

下面是SSL/TLS握手的标准步骤,包括了客户端和服务器之间的密钥交换和认证过程:

1. 客户端Hello(Client Hello)

  • 客户端向服务器发送一个**"Hello"**消息,消息中包括:
    • 支持的SSL/TLS协议版本:例如TLS 1.2或TLS 1.3。
    • 支持的加密算法套件(Cipher Suites):如RSA、AES、ECDSA等,客户端告诉服务器自己支持的加密方案。
    • 客户端生成的随机数(Client Random):用于后续的加密和密钥生成。
    • 客户端的"会话ID"(可选):用于会话复用。
    • 压缩方法:客户端支持的压缩方法。

2. 服务器Hello(Server Hello)

  • 服务器收到客户端的Hello消息后,回复一个**"Hello"**消息,消息中包含:
    • 服务器选择的加密算法套件:从客户端提供的套件中选择一个。
    • 服务器生成的随机数(Server Random):与客户端的随机数一起用于后续生成对话密钥。
    • 服务器的数字证书(Server Certificate):服务器的证书包含服务器的公钥。证书由一个受信任的证书颁发机构(CA)签发,客户端可以用该证书来验证服务器的身份。
    • 服务器的其他加密信息:例如服务器是否需要客户端证书(在双向认证中)等。

3. 证书验证和密钥交换

  • 客户端验证服务器证书
    • 客户端使用证书颁发机构(CA)公钥验证服务器证书的有效性(通过证书链进行验证)。如果证书有效,则继续,否则中止连接。
    • 客户端从服务器证书中提取服务器的公钥。
  • 客户端生成预主密钥 (Pre-Master Secret):
    • 客户端生成一个预主密钥,并使用服务器的公钥加密该密钥后发送给服务器。
    • 重要: 预主密钥用于生成最终的会话密钥,这个密钥将用于会话期间的加密通信。

4. 服务器解密预主密钥

  • 服务器收到客户端加密的预主密钥后,使用自己的私钥解密并获取预主密钥

5. 客户端和服务器生成会话密钥

  • 客户端和服务器都使用以下数据生成一个会话密钥(Session Key)
    • 客户端随机数(Client Random)。
    • 服务器随机数(Server Random)。
    • 预主密钥(Pre-Master Secret)。
  • 通过这些数据,客户端和服务器各自独立生成相同的会话密钥。这个密钥用于后续的对称加密通信。

6. 客户端和服务器验证密钥交换

  • 双方都会交换一个Finished 消息,用来验证是否能够成功加密解密。
    • 客户端计算并发送消息认证码(MAC)验证密钥交换的完整性。
    • 服务器收到客户端的消息后,也会验证是否与计算的MAC匹配,确保密钥交换过程没有被篡改。

7. 加密数据传输

  • 一旦握手完成,客户端和服务器便可以开始加密通信,所有的传输数据都使用会话密钥进行对称加密。
  • 会话密钥保证了后续数据传输的机密性完整性认证性

8. 关闭连接

  • 当通信结束时,客户端和服务器会交换关闭通知,断开加密会话。
相关推荐
DeepAgent7 小时前
AI Agent 项目赏析:DeerFlow 2.0 —— 一个真正“长跑“的 SuperAgent 是怎么设计出来的?
github·agent
重生之我来学Python7 小时前
Docker套装的简介、安装、超级详细教程
linux·docker·容器·eureka·github
Lsetea9 小时前
Nginx报SSL_CTX_use_PrivateKey failed:证书与私钥不匹配怎么排查
nginx·https·ssl证书·openssl·私钥
粥里有勺糖9 小时前
视野修炼-技术周刊第132期 | 一些有趣的组件
前端·github·aigc
智碳能碳管理平台9 小时前
企业能碳管理系统的月度锁账、防篡改与留痕怎么架构
架构·github·能碳管理系统·智碳能碳管理平台·企业能碳管理系统·绿色工厂申报saas·能碳管理平台
mjhcsp10 小时前
Github Copilot 新手极速上手指南
github·copilot
重生之我来学Python10 小时前
Git-SVN 混合开发,从入门到精通!
开发语言·git·svn·github
qq_2976708710 小时前
第 4 篇:HTTP 和浏览器——HTTPS 不只是「把 HTTP 包一层 TLS」那么简单
网络安全·https·tls
u13013011 小时前
GitHub 热榜项目:日榜(2026-09-05)
github
今夕资源网11 小时前
本地SSL证书生成工具本地 HTTPS 配置不用再敲命令:CertTool 一站式管理自签证书与 Hosts
网络协议·https·ssl·ssl证书生成·ssl本地测试证书