Nginx:SSL/TLS 配置
HTTPS 协议简单来说就是“HTTP 协议”和“SSL/TLS 协议”的组合。
HTTPS 工作流程图描述
1. 客户端发起 HTTPS 请求
-
说明:用户在浏览器中输入一个 HTTPS URL 或点击一个 HTTPS 链接。浏览器会向指定的服务器发起一个 HTTPS 请求。
[客户端] --发起HTTPS请求--> [DNS服务器]
2. DNS 解析
-
说明:浏览器首先进行 DNS 查询,以将域名解析为 IP 地址。
[客户端] <--返回IP地址-- [DNS服务器]
3. TCP 连接建立
- 说明:一旦得到服务器的 IP 地址,浏览器会尝试与服务器建立 TCP 连接(通常是三次握手过程)。
[客户端] --TCP连接请求(SYN)--> [服务器]
[客户端] <--TCP连接响应(SYN-ACK)-- [服务器]
[客户端] --TCP连接确认(ACK)--> [服务器]
4. TLS 握手协议
-
说明:TCP 连接建立后,浏览器和服务器之间开始 TLS 握手协议,确保通信的安全性。
- 4.1 客户端问候 (Client Hello):客户端发送支持的加密套件列表和其他参数。
- 4.2 服务器问候 (Server Hello):服务器选择一个加密套件,并发送其 SSL 证书。
- 4.3 证书验证:客户端验证服务器提供的 SSL 证书的有效性和可信度,比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。
- 4.4 密钥交换:双方协商生成用于加密通信的对称密钥。客户端使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥加密这个对称密钥,发给服务器。服务器使用自己的私钥解