«

HTTPS 原理详解:从证书到握手的完整流程

时间:2026-10-4 10:05     作者:emer     分类: 无


前言

HTTPS 现在已经是网站标配了,但很多人只知道"HTTPS 更安全",却不知道它到底是怎么安全的。本文用最通俗的方式,带你完整理解 HTTPS 的工作原理。

一、HTTP 为什么不安全

HTTP 是明文传输的,就像你在明信片上写信,邮局的每个人都能看到内容。

具体来说,HTTP 有三个问题:

  1. 窃听风险:中间人可以看到你传输的所有内容
  2. 篡改风险:中间人可以修改你传输的内容
  3. 冒充风险:中间人可以冒充服务器欺骗你

HTTPS 就是为了解决这三个问题而生的。

二、HTTPS = HTTP + SSL/TLS

HTTPS 本质上就是在 HTTP 和 TCP 之间加了一层 SSL/TLS 协议。

TLS 做了三件事:

  1. 加密:数据加密传输,中间人看不到内容
  2. 完整性校验:数据被篡改了能发现
  3. 身份认证:确认你连接的是真的服务器

三、数字证书

HTTPS 信任的基础是数字证书。

你可以把数字证书理解成身份证:

常见的免费证书:Let's Encrypt

四、TLS 握手流程

TLS 握手是 HTTPS 最核心的部分,用大白话讲一遍:

第一步:Client Hello

客户端说:"你好,我支持这些加密算法,这是我的随机数 A。"

Client → Server: 
- TLS 版本
- 支持的加密算法列表
- 随机数 A

第二步:Server Hello

服务器说:"好的,我们用这个加密算法,这是我的随机数 B,这是我的证书。"

Server → Client:
- 选择的加密算法
- 随机数 B
- 数字证书(包含服务器公钥)

第三步:客户端验证证书

客户端做几件事:

  1. 证书是不是可信 CA 签的?
  2. 证书过期了没?
  3. 证书上的域名和当前访问的域名一致吗?

验证通过,才继续。

第四步:生成会话密钥

客户端用服务器公钥加密一个"预主密钥"发给服务器。

Client → Server:
- 预主密钥(用服务器公钥加密)

服务器用自己的私钥解密,拿到预主密钥。

然后客户端和服务器都用:

这三个东西,计算出会话密钥(Session Key)。

第五步:开始加密通信

双方都有了会话密钥,之后的所有通信都用这个密钥加密。

Client ↔ Server:
- 用会话密钥加密的数据

五、为什么用非对称加密交换密钥,对称加密传数据

这是很多人困惑的点:

HTTPS 的设计很巧妙:

  1. 先用非对称加密安全地交换会话密钥(只交换一次)
  2. 然后用对称加密快速传输数据(所有通信都用这个密钥)

既保证了安全,又保证了性能。

六、证书链

一张证书不是孤立的,它背后有一条证书链:

根证书(Root CA)
  └─ 中间证书(Intermediate CA)
       └─ 服务器证书(你的网站)

浏览器信任根证书,根证书签中间证书,中间证书签你的服务器证书。这样一层层验证下来,就信任了你的服务器证书。

七、常见问题

1. 为什么有的网站 HTTPS 显示"不安全"

通常是因为:

2. HTTPS 一定安全吗?

不一定。如果:

那 HTTPS 也会不安全。

3. HTTPS 会影响性能吗?

会有一点影响,主要在握手阶段。但现在 TLS 1.3 已经把握手优化到 1-RTT,加上会话复用,性能影响很小了。

总结

HTTPS 的核心思路:

  1. 用非对称加密安全交换会话密钥
  2. 用对称加密快速传输数据
  3. 用数字证书验证服务器身份
  4. 用 MAC 校验数据完整性

搞懂这四点,HTTPS 的原理你就掌握了一大半。

标签: HTTPS SSL TLS 加密 证书