HTTPS

连接建立过程 基本流程如下: 客户端向服务器索要并验证服务器的公钥 双方协商产生对称密钥 双方采用对称密钥进行加密通信 TLS 的握手阶段涉及四次通信,使用不同的密钥交换算法,流程也会有所不同。下面以 RSA 密钥交换算法为例,介绍 HTTPS 连接建立过程。 Client Hello 客户端向服务器发送一个 Client Hello 消息,包含以下信息: 客户端支持的 TLS 版本 客户端生成的一个随机数(Client Random) 客户端支持的加密算法,如 RSA、DH、ECDH 等 Server Hello 服务器收到 Client Hello 消息后,向客户端发送一个 Server Hello 消息,包含以下信息: 服务器选择的 TLS 版本 服务器生成的一个随机数(Server Random) 服务器选择的加密算法 服务器的数字证书 客户端回应 客户端收到 Server Hello 消息后,会执行以下操作: 通过浏览器或者 OS 中的 CA 公钥验证服务器的数字证书 从服务器的数字证书中提取公钥,用于后续的通信 生成一个随机数(Pre-Master Secret),并使用服务器的公钥加密该随机数 向服务器发送消息,包含以下信息 加密后的 Pre-Master Secret 加密算法改变通知,表示后续的通信将使用对称密钥加密 客户端的 Finished 消息,包含一个验证数据,用于验证双方是否使用相同的密钥 服务器回应 服务器收到客户端的 Pre-Master Secret 后,会执行以下操作: 使用私钥解密 Pre-Master Secret 使用 Client Random、Server Random 和 Pre-Master Secret 生成对称密钥(Master Secret) 向客户端发送消息,包含以下信息 加密算法改变通知,表示后续的通信将使用对称密钥加密 服务器的 Finished 消息,包含一个验证数据,用于验证双方是否使用相同的密钥

March 1, 2024

HTTP 状态码

权威文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status 以下为补充的一些状态码 499 Client Closed Request 由 Nginx 定义的非标准状态码,表示客户端主动关闭了请求,导致服务器无法完成请求

March 1, 2024