HTTPS 与 TLS 工作原理详解:实用指南

Security2026-11-04TryQuickToolBox

为什么 HTTPS 至关重要

每次访问网站时,你都在信任连接是私密的,并且网站就是它声称的那个身份。HTTPS(超文本传输安全协议)通过将 HTTP 叠加在 TLS(传输层安全协议)之上来实现这一点。如果没有它,密码、信用卡号和个人数据将以明文传输,很容易被同一网络上的任何人拦截。

在本指南中,我们将剖析 HTTPS 和 TLS 的实际工作原理——从建立安全通道的握手到保护数据的加密。你将了解关键概念、涉及的步骤,以及确保自己网站得到适当保护的实用技巧。

TLS 握手:建立信任

在交换任何数据之前,客户端(浏览器)和服务器会执行 TLS 握手。此过程验证服务器身份、协商加密算法并生成会话密钥。具体步骤因 TLS 版本而异,但核心思想相似。

分步说明:TLS 1.2 握手

  1. Client Hello(客户端问候): 客户端发送一条消息,包含支持的 TLS 版本、密码套件和一个随机值(Client Random)。
  2. Server Hello(服务器问候): 服务器响应其选择的 TLS 版本、密码套件、一个随机值(Server Random)及其数字证书。
  3. 证书验证: 客户端根据受信任的证书颁发机构(CA)检查证书,并验证服务器的身份。
  4. 密钥交换: 使用 ECDHE 等算法,双方计算出共享的预主密钥,而无需直接传输它。
  5. 会话密钥: 双方从预主密钥和随机值推导出相同的会话密钥。
  6. Finished(完成): 每一方发送一个 MAC 以确认握手的完整性;加密通信开始。

TLS 1.3 将此简化为单次往返(1-RTT),甚至支持重复连接的 0-RTT 恢复,从而显著降低延迟。

加密:对称与非对称

TLS 同时使用非对称和对称加密。非对称(公钥)密码学在握手期间用于安全地交换密钥。一旦会话密钥建立,对称加密(如 AES 或 ChaCha20)便接管批量数据传输,因为它要快得多。

现代密码套件使用带关联数据的认证加密(AEAD),例如 AES-GCM 或 ChaCha20-Poly1305,它们在一个步骤中同时提供机密性和完整性。

证书与信任链

数字证书将公钥绑定到身份(如域名),并由证书颁发机构(CA)签名。浏览器和操作系统附带一个受信任根 CA 的存储库。当服务器出示其证书时,客户端会验证:

如果任何检查失败,浏览器会显示警告。Let's Encrypt 和其他 CA 提供免费证书,使 HTTPS 对所有人可用。

常见的 TLS 配置错误

即使启用了 HTTPS,错误的配置也可能削弱安全性。请注意以下问题:

测试你的 HTTPS 配置

使用 SSL Labs 的 SSL Test 等在线工具为你的配置评分。通过启用 TLS 1.3、使用强密码并实施 HSTS,争取获得 A 或 A+ 评级。定期监控证书到期情况——使用 Certbot 等 ACME 客户端自动化续订。

常见问题

HTTPS 和 TLS 有什么区别?

HTTPS 是叠加在 TLS 之上的 HTTP。TLS 是提供加密、认证和完整性的密码学协议。HTTPS 是使用 TLS 的 HTTP 安全版本。

TLS 1.3 如何提高性能?

TLS 1.3 将握手减少到一次往返(1-RTT),并支持 0-RTT 恢复,从而降低延迟。它还移除了过时的算法,简化了配置。

每个子域都需要单独的证书吗?

你可以使用通配符证书(*.example.com)或多域证书(SAN)来覆盖多个主机名。Let's Encrypt 免费提供这两种选项。

准备好检查你自己的 TLS 流量了吗?使用我们的 Nginx 日志分析器 解析访问日志,发现可疑模式或失败的 TLS 握手。