跳到主要内容

HTTP 与 HTTPS

HTTP 和 HTTPS 是建站时最容易被“背概念”却最应该放进真实链路里理解的两个主题。

你不用把 TLS 细节全背下来,但至少要明确这几个问题:

  • 浏览器为什么默认更信任 https:// 站点
  • 证书到底在验证什么
  • 为什么 Cloudflare、Nginx、对象存储、托管平台都会反复提到 HTTPS
  • 为什么“页面能打开”和“链路足够安全”不是一回事

这篇要解决什么

一句话版本:

  • HTTP 负责定义“浏览器和服务器怎么交换请求与响应”
  • HTTPS 则是在 HTTP 之下加一层 TLS,把这条链路变成“可验证身份、可加密传输、可防篡改”的连接

HTTP 到底管什么

HTTP 本身主要定义这些内容:

  • 请求方法,例如 GETPOSTPUTDELETE
  • 状态码,例如 200301404500
  • 头部和正文怎么组织
  • 客户端和服务器如何协商缓存、压缩、内容类型、鉴权等行为

这意味着:

  • 你访问一张图片、一个 HTML 页面、一个 JSON API,本质上都可以走 HTTP
  • 站点缓存、CDN 回源、浏览器开发者工具里看到的大部分字段,也都还是 HTTP 语义

HTTPS 多加了什么

HTTPS 可以理解成“HTTP over TLS”。

TLS 额外提供三件事:

  • 机密性:别人截到流量,也不该直接看到内容
  • 完整性:中途有人改包,通信双方应能发现
  • 身份验证:浏览器需要确认自己连到的确实是你声明的域名,而不是一个伪造站点

HTTP 和 HTTPS 的核心区别

维度HTTPHTTPS
默认端口80443
传输内容明文TLS 加密后传输
身份验证没有通过证书验证域名身份
防篡改有完整性保护
浏览器信任容易被标记为不安全现代网站默认要求
SEO 与分享通常不占优更符合现代搜索和浏览器要求

证书到底是什么

可以把证书理解成“某个受信任机构签发的身份证明”,它至少说明:

  • 哪个域名可以使用这张证书
  • 这张证书由谁签发
  • 有效期到什么时候
  • 浏览器该如何验证这张证书链

建站时你最常见到的几类证书场景是:

  • 托管平台自动证书:静态托管平台自动签发
  • Let's Encrypt 证书:源站常见的免费方案
  • Cloudflare 源站证书:只用于 Cloudflare 和源站之间
  • 商业证书:少数企业场景仍会用到

一次 HTTPS 访问大概发生了什么

最小理解版流程如下:

  1. 浏览器访问 https://example.com
  2. 服务器返回证书
  3. 浏览器验证证书是否可信、域名是否匹配、是否过期
  4. 双方完成 TLS 握手,协商加密参数
  5. 之后才开始交换真正的 HTTP 请求和响应

建站里最常见的 4 个误区

1. “我只是个人站,不需要 HTTPS”

不对。现代浏览器、搜索引擎、第三方登录、表单提交、Service Worker 等能力几乎都默认把 HTTPS 当作前提。

2. “用了 Cloudflare,就不用配源站证书”

不一定。如果你的站点前面有 Cloudflare,Cloudflare 到源站这段链路也应该尽量加密。

3. “证书配好了,站点就绝对安全”

不对。HTTPS 解决的是传输链路安全,不解决服务器漏洞、XSS、SQL 注入或权限设计问题。

4. “HTTP 比 HTTPS 快很多”

这个结论已经过时。现代硬件和协议优化下,HTTPS 的额外开销通常远小于它的收益。

从 0 建站时应该怎么做

如果你是第一次自己搭站,默认做法可以直接定成这样:

  1. 全站只提供 HTTPS
  2. HTTP 统一 301 重定向到 HTTPS
  3. 能自动签发证书就不要手工维护
  4. 如果前面用了 CDN 或代理层,就把源站到代理层的链路也配成加密
  5. 上线后实际检查证书状态和重定向链

适合接着读什么