概念图解难度 · 进阶

HTTPS 加密流程图解:TLS 如何保护你的数据

HTTPS / TLS 握手流程图解,一张图看懂证书、数字签名、密钥交换与对称加密,理解小锁头背后的原理。

#HTTPS#TLS#证书#加密

先看效果

HTTPS TLS握手与加密传输流程图
浏览器与服务器先完成 TLS 握手,之后所有数据都加密传输

为什么 HTTPS 不是「加了个锁」那么简单

出门锁门很直接,但网络加密有个难题:双方从来没见面,怎么安全地共享一个密码(密钥)? 如果直接在网络上发密码,黑客中途就能看到。

HTTPS(更准确说是 TLS 协议)用一套巧妙的分工解决它:用非对称加密安全地协商出对称密钥,再用对称密钥加密实际数据。因为对称加密快、非对称加密安全但慢。

原理图解

看上面这张图,TLS 握手的四个阶段:

  1. ClientHello:浏览器说「我要安全连接,我支持这些加密算法(密码套件)」;
  2. ServerHello + 证书:服务器选好算法,送上自己的数字证书(里面有公钥、域名、签发机构 CA 的签名);
  3. 交换密钥材料:浏览器验证证书合法后,双方各出随机数,组合生成同一个会话密钥(真正传输用的对称密钥);
  4. Finished 确认:互发握手过程的摘要(加密),确认两侧密钥一致、没人中途改过包。

握手完成后,浏览器地址栏的小锁头就亮了,之后所有 HTTP 内容都用这个会话密钥加密传输。

关键点:证书为什么能防冒充

当你访问 bank.com,怎么确定对面真是银行?凭据是证书——由受信任的 CA(证书颁发机构)签发。浏览器内置了这些 CA 的公钥:

  • 服务器把证书出示给浏览器;
  • 浏览器用 CA 公钥验证证书上的数字签名,确认证书是 CA 真签的、没被篡改;
  • 再核对证书上的域名和当前访问的域名一致。

任何环节不对,浏览器都会亮红警告。这就是「信任链」:你信任浏览器,浏览器信任 CA,CA 担保了服务器。

常见问题

Q: TLS 1.2 和 1.3 有什么区别? A: TLS 1.3 精简了握手:把密钥交换和证书验证合并,通常 1 个 RTT 就完成(1.2 要 2 个),更快更安全(删除了很多过时算法)。

Q: 证书过期了会怎样? A: 浏览器会报「证书过期」错误并阻止访问。各 CA 已经普及 90 天短证书,配合自动化续期(如 Let’s Encrypt + 定时任务)成为标配。

下一步

HTTPS 讲完,顺便把建立连接的前提补上——TCP 是怎么先握手再传数据的?看 TCP 三次握手图解。