HTTPS握手过程
字数 952 2025-11-14 04:41:08

HTTPS握手过程

HTTPS握手过程是建立安全通信连接的关键步骤,涉及身份验证和密钥交换。以下是逐步分解:

1. 客户端发起请求(ClientHello)

客户端(如浏览器)向服务器发送以下信息:

  • 支持的TLS版本(如TLS 1.2或1.3)。
  • 密码套件列表(例如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256),包含密钥交换、加密和哈希算法。
  • 随机数(Client Random),用于后续生成会话密钥。

2. 服务器响应(ServerHello)

服务器返回以下内容:

  • 选定的TLS版本和密码套件(从客户端提供的列表中选择)。
  • 随机数(Server Random),同样用于密钥生成。
  • 数字证书(包含公钥、域名、颁发机构签名等),供客户端验证身份。
  • (可选)证书请求(如需要客户端认证)。

3. 客户端验证证书

客户端执行以下操作:

  • 检查证书颁发机构(CA) 是否受信任(通过预置的根证书验证签名链)。
  • 确认证书有效期和域名匹配
  • 若验证失败,终止连接并显示警告(如“证书无效”)。

4. 密钥交换(Pre-Master Secret生成)

客户端:

  • 生成另一个随机数 Pre-Master Secret
  • 用证书中的服务器公钥加密 Pre-Master Secret,发送给服务器。
  • (在TLS 1.3中改为直接通过Diffie-Hellman交换共享密钥)。

5. 会话密钥生成

客户端和服务器分别使用以下数据生成相同的会话密钥

  • Client Random
  • Server Random
  • Pre-Master Secret
    通过指定哈希函数(如SHA-256)生成对称加密密钥,用于后续数据传输。

6. 安全通道建立

双方交换完成以下消息:

  • 客户端发送“Finished”消息:用会话密钥加密一段验证数据,证明密钥正确。
  • 服务器发送“Finished”消息:同样返回加密的验证数据。
    此后,所有通信均使用会话密钥加密,进入安全传输阶段。

补充说明

  • 前向保密:若使用ECDHE等密钥交换算法,即使服务器私钥泄露,历史会话也无法被解密。
  • TLS 1.3简化:将握手步骤从2轮减少到1轮,通过合并密钥交换提升速度。
HTTPS握手过程 HTTPS握手过程是建立安全通信连接的关键步骤,涉及身份验证和密钥交换。以下是逐步分解: 1. 客户端发起请求(ClientHello) 客户端(如浏览器)向服务器发送以下信息: 支持的TLS版本 (如TLS 1.2或1.3)。 密码套件列表 (例如 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ),包含密钥交换、加密和哈希算法。 随机数 (Client Random),用于后续生成会话密钥。 2. 服务器响应(ServerHello) 服务器返回以下内容: 选定的TLS版本和密码套件 (从客户端提供的列表中选择)。 随机数 (Server Random),同样用于密钥生成。 数字证书 (包含公钥、域名、颁发机构签名等),供客户端验证身份。 (可选) 证书请求 (如需要客户端认证)。 3. 客户端验证证书 客户端执行以下操作: 检查证书颁发机构(CA) 是否受信任(通过预置的根证书验证签名链)。 确认证书有效期和域名匹配 。 若验证失败,终止连接并显示警告(如“证书无效”)。 4. 密钥交换(Pre-Master Secret生成) 客户端: 生成另一个随机数 Pre-Master Secret 。 用证书中的 服务器公钥加密 Pre-Master Secret,发送给服务器。 (在TLS 1.3中改为直接通过Diffie-Hellman交换共享密钥)。 5. 会话密钥生成 客户端和服务器分别使用以下数据生成相同的 会话密钥 : Client Random Server Random Pre-Master Secret 通过指定哈希函数(如SHA-256)生成对称加密密钥,用于后续数据传输。 6. 安全通道建立 双方交换完成以下消息: 客户端发送“Finished”消息 :用会话密钥加密一段验证数据,证明密钥正确。 服务器发送“Finished”消息 :同样返回加密的验证数据。 此后,所有通信均使用会话密钥加密,进入安全传输阶段。 补充说明 前向保密 :若使用ECDHE等密钥交换算法,即使服务器私钥泄露,历史会话也无法被解密。 TLS 1.3简化 :将握手步骤从2轮减少到1轮,通过合并密钥交换提升速度。