HTTP 和 HTTPS 有什么区别?
简化版
HTTPS = HTTP + TLS/SSL。HTTP 是明文传输,能被窃听、篡改、冒充;HTTPS 在 HTTP 和 TCP 之间加了一层 TLS,提供三个保证:加密(防窃听)、完整性(防篡改)、身份认证(靠 CA 证书防冒充)。代价是需要证书、握手多一点开销、稍慢。端口也不同:HTTP 用 80,HTTPS 用 443。
详细版
| 维度 | HTTP | HTTPS |
|---|---|---|
| 传输 | 明文 | TLS 加密 |
| 端口 | 80 | 443 |
| 安全性 | 可被窃听/篡改/冒充 | 加密 + 完整性 + 身份认证 |
| 证书 | 不需要 | 需要 CA 签发的证书 |
| 性能 | 快 | 略慢(多 TLS 握手) |
HTTPS 解决 HTTP 的三大安全问题:
- 窃听(被人偷看)→ 用加密解决;
- 篡改(被人改内容)→ 用完整性校验(摘要 + 签名)解决;
- 冒充(假冒服务器/中间人)→ 用数字证书 + CA 认证解决。
TLS 握手用非对称加密安全地协商出一个对称密钥,之后的数据用对称加密传输——兼顾安全和性能。
完整版教学
一、HTTP 明文有多危险
HTTP 数据全程明文,在传输路径上的任何一个节点(WiFi 热点、运营商、代理、网关)都能:
- 窃听:直接看到你传的账号密码、隐私;
- 篡改:改掉网页内容(比如给你注入广告、把下载链接换成木马);
- 冒充:假装成目标网站骗你(中间人攻击 MITM)。
这就是为什么现在几乎所有网站都上了 HTTPS——HTTP 在公网上传敏感数据等于裸奔。
二、HTTPS 的三重保护对应三个威胁
理解 HTTPS 的关键是把它的三个能力和三个威胁一一对应:
- 加密(对称 + 非对称) → 对抗窃听。别人抓到包也是密文,看不懂。
- 完整性校验(消息认证码/摘要) → 对抗篡改。数据被改过,校验就会失败。
- 数字证书 + CA → 对抗冒充。证书由权威 CA 签发,证明「你连的确实是这个网站」,防止中间人假冒。
只有三者齐全才算「安全」——光加密不认证,你可能加密地连到了一个假服务器。
三、为什么用「非对称 + 对称」混合加密
TLS 握手为什么不直接全程用非对称加密?因为:
- 非对称加密(RSA/ECC)安全但慢:公钥加密、私钥解密,适合安全地传递少量数据,但性能差,不适合加密大量业务数据。
- 对称加密(AES)快但有密钥分发难题:加解密用同一个密钥,快,但「怎么把这个密钥安全地告诉对方而不被中间人拿到」是难点。
HTTPS 的巧妙之处是结合两者:握手阶段用非对称加密安全地协商出一个对称密钥(会话密钥),之后的通信全用对称加密。既解决了密钥分发问题,又保证了传输性能。(TLS 握手的详细过程属于 HTTPS 专题,这里只讲和 HTTP 的区别。)
四、数字证书解决「公钥可信」问题
有个隐藏问题:非对称加密要用服务器的公钥,但你怎么知道拿到的公钥是真服务器的、不是中间人伪造的?
这就要靠数字证书:服务器的公钥由权威 CA(证书颁发机构) 签名背书,做成证书。浏览器内置了受信任的 CA 列表,能验证证书签名是否可信、域名是否匹配、是否过期。验证通过才信任这个公钥。这样中间人无法伪造一个被 CA 认可的证书,冒充就被挡住了。
五、HTTPS 的代价与优化
- 握手开销:多了 TLS 握手(TLS 1.2 需 2-RTT,TLS 1.3 优化到 1-RTT,会话恢复可 0-RTT),首次连接稍慢;
- 计算开销:加解密消耗 CPU,但现代硬件基本可忽略;
- 成本:需要申请证书(现在有 Let’s Encrypt 等免费证书)。
综合看,HTTPS 的安全收益远大于性能代价,加上 HTTP/2 只在 HTTPS 上启用,现在是全站 HTTPS 的时代。
六、常见误区
- ❌ 以为 HTTPS 只是「加密」——它还包含完整性校验和身份认证(证书),三者缺一不可。
- ❌ 以为 HTTPS 全程用非对称加密——握手用非对称协商密钥,数据传输用对称加密(混合)。
- ❌ 以为有了 HTTPS 就绝对安全——它保护「传输过程」,防不了服务器本身被攻破、或用户被钓鱼。
- ❌ 把端口记混——HTTP 是 80,HTTPS 是 443。
六、常见误区与追问
| 考点 | 正确口径 |
|---|---|
| HTTP | 明文传输,不验证身份,不防篡改 |
| HTTPS | HTTP over TLS,提供加密、认证、完整性 |
| 代价 | 握手和证书校验有开销,但可通过复用和 TLS 1.3 优化 |
HTTP request -> plaintext
HTTPS:
TLS handshake
encrypted HTTP data
certificate authentication
HTTPS 不是新应用协议,而是在 HTTP 和 TCP 之间加了 TLS 安全层。
- 误区:HTTPS 只解决加密,不解决身份。 证书链用于证明服务器公钥可信,防止中间人冒充。
- 误区:用了 HTTPS 就绝对安全。 HTTPS 保护传输链路,但不解决 XSS、业务越权、弱口令等应用安全问题。
- 误区:HTTPS 一定很慢。 现代 TLS、会话复用、HTTP/2/3 和硬件加速让开销通常可控。
- 追问:HTTPS 提供哪三类保护? 机密性、完整性、身份认证,分别应对窃听、篡改和冒充。
- 追问:为什么不全程用非对称加密? 非对称加密慢,通常用于认证和密钥协商,数据传输用对称加密。
- 追问:证书过期会怎样? 浏览器会警告或阻止访问,因为无法确认服务器身份仍可信。
七、加强记忆
HTTPS = HTTP + TLS,在传输层之上加密。它解决 HTTP 明文的三大问题:加密防窃听、完整性校验防篡改、CA 证书防冒充。用「非对称加密协商出对称密钥、之后用对称加密传数据」兼顾安全与性能,用数字证书解决「公钥可信」。端口 HTTP 80 / HTTPS 443,代价是握手开销略高。