HTTPS 和 TLS 到底如何工作:实用指南

Security2026-10-29TryQuickToolBox

你在浏览器中输入 https:// 并看到一个挂锁图标,但幕后究竟发生了什么?许多开发者将 HTTPS 视为一个复选框——启用后便不再理会。然而,理解 HTTPS 和 TLS 的真正工作原理对于调试连接问题、优化性能以及构建安全的应用程序至关重要。本指南通过实际示例逐步介绍 TLS 握手、证书验证和加密层,以便你能自信地回答诸如“我的网站为什么慢?”或“那个证书错误是什么意思?”等问题。

HTTPS 到底是什么

HTTPS 简单来说就是 HTTP 运行在 TLS(传输层安全协议)之上。TLS 提供三项保证:

没有 TLS,HTTP 以明文发送所有内容——密码、Cookie 和个人数据对网络上的任何人都可见。TLS 将 HTTP 消息包裹在加密隧道中,使第三方无法读取。

TLS 握手:分步详解

在任何 HTTP 数据流动之前,客户端和服务器会执行握手以协商加密参数并验证身份。以下是典型的 TLS 1.2 握手过程(TLS 1.3 简化了这一过程,我们稍后会看到):

  1. 客户端问候:客户端发送支持的密码套件列表、TLS 版本和一个随机值。
  2. 服务器问候:服务器选择一个密码套件和 TLS 版本,并发送自己的随机值。
  3. 证书:服务器发送其 TLS 证书(以及任何中间证书)以证明其身份。
  4. 密钥交换:客户端使用证书的公钥加密一个预主密钥并发送给服务器。双方派生出相同的会话密钥。
  5. 完成:双方发送握手消息的 MAC 以验证完整性,然后开始加密通信。

在 TLS 1.3 中,握手过程得到简化:客户端在第一条消息中发送密钥共享,服务器用自己的密钥共享和证书响应,将往返次数减少到仅一次。这显著加快了连接建立速度。

证书和信任链

TLS 证书将公钥与域名绑定,并由证书颁发机构(CA)签名。浏览器信任一组预装在操作系统或浏览器中的根 CA。当服务器出示其证书时,浏览器会验证:

如果任何检查失败,你将看到警告。像 Let's Encrypt 这样的现代工具使获取免费、自动化的证书变得容易,因此没有理由不使用 HTTPS。

TLS 中的对称加密与非对称加密

TLS 巧妙地结合了两种加密类型:

这种混合方法为你提供了公钥加密的安全性和对称密码的性能。

实际示例:检查 TLS 连接

你可以使用 openssl 查看握手过程。在终端中运行以下命令:

openssl s_client -connect example.com:443 -tls1_3

输出显示了密码套件、证书链和会话详细信息。查找类似 Protocol : TLSv1.3 和 Cipher : TLS_AES_256_GCM_SHA384 的行。这对于调试客户端无法连接的原因非常有价值——可能是客户端不支持服务器的密码套件或 TLS 版本。

常见的 TLS 陷阱及如何避免

如需快速检查,请通过在线 TLS 测试工具运行你的网站,或使用 openssl s_client -connect yourdomain.com:443 -showcerts 检查证书链。

TLS 1.3:新特性及其重要性

TLS 1.3(RFC 8446)带来了重大改进:

大多数现代浏览器和服务器都支持 TLS 1.3。启用它可以同时提升性能和安全性。

常见问题

TLS 和 SSL 有什么区别?

SSL(安全套接层)是 TLS 的前身。由于安全缺陷,SSL 2.0 和 3.0 版本已被弃用。TLS 是现代、安全的协议,尽管人们仍然口语化地说“SSL 证书”。

HTTPS 如何影响 SEO 和性能?

像 Google 这样的搜索引擎将 HTTPS 作为排名信号。在性能方面,TLS 在握手期间会增加少量开销,但借助 TLS 1.3 和会话恢复,影响微乎其微。使用 HTTP/2 或 HTTP/3(需要 HTTPS)实际上可以提高速度。

我可以不使用证书而使用 HTTPS 吗?

不可以。证书是证明服务器身份和启用加密所必需的。你可以从 Let's Encrypt 获取免费证书,或使用自签名证书进行内部测试,但浏览器会向用户发出关于自签名证书的警告。

准备好测试你的 HTTPS 设置了吗?使用我们的 Nginx 日志分析器 来监控 TLS 握手错误并优化你的服务器配置。