Vibe Tutorial
域名解析原理与网络接入

12.6 HTTPS与网络协议

Tip

HTTP 是明文传输的。就像如果你在教室传纸条,中间经过的所有同学(路由器、ISP)都能看到纸条上的内容。HTTPS (Secure) 就是把纸条放进保险箱里再传。


1. 为什么要学这个?

你在星巴克连了公共 WiFi。 你登录了一个 HTTP 网站。 黑客坐在角落里,用 Wireshark 抓了个包。 你的密码明文显示在他的屏幕上。 你的账号没了。

在 2024 年,没有 HTTPS 的网站就是“裸奔”。


2. 核心概念:隐形保镖

HTTPS = HTTP + TLS (加密层)。

2.1 握手流程 (通俗版)

  1. Client Hello: 浏览器说:“我要建立安全连接,支持这些加密算法。”
  2. Server Hello: 服务器说:“好的,这是我的 证书 (Certificate),证明我是谷歌。”
  3. Verify: 浏览器问公证处 (CA):“这张证书是真的吗?” CA:“是真的。”
  4. Key Exchange: 浏览器和服务器协商出一个 对称密钥 (Session Key)。
  5. Encrypted Data: 之后的数据传输,都用这个密钥加密。

3. 解决方案 (HOW)

3.1 免费证书获取

过去证书很贵,现在感谢 Let's Encrypt,证书免费了。

  1. Vercel / Netlify: 自动申请、自动续期 (Autopilot)。你什么都不用做
  2. Nginx (自建): 使用 certbot 工具。
# Ubuntu 下一键配置 Nginx 的 HTTPS
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

3.2 握手流程图

graph TD
    Client["浏览器"] -->|"Step 1: Client Hello"| Server["服务器"]
    Server -->|"Step 2: 发送证书 (公钥)"| Client
    
    Client -->|"Step 3: 验证证书 (找 CA)"| CA["CA 机构"]
    
    Client -->|"Step 4: 生成随机密钥 (用公钥加密)"| Server
    Server -->|"Step 5: 解密得到密钥"| Server
    
    Client <-->|"Step 6: 加密传输 (HTTPS)"| Server
    
    style CA fill:#fff9c4,stroke:#fbc02d
    style Client fill:#e1bee7,stroke:#8e24aa
    style Server fill:#c8e6c9,stroke:#2e7d32

4. 避坑指南

❌ 不要这样做 ✅ 应该这样做 为什么
手动上传证书 自动续期 (ACME) 证书通常只有 3个月或 1年有效期。依靠人工记忆一定会忘,忘了就全站不可用。
Mixed Content 全站 HTTPS 网页是 HTTPS,图片链接却是 HTTP。此时浏览器不会显示“小锁头”,仍然是不安全的。
无 HSTS 开启 HSTS 强制浏览器始终使用 HTTPS 访问你的网站,防止中间人通过 SSL Strip 降级攻击。

5. 真实案例

Story

2018年,过期证书引发的血案

2018年,电信巨头 Ericsson (爱立信) 的软件证书过期。 导致英国 O2、日本 SoftBank 等数千万手机用户集体断网。 原因仅仅是一个运营人员忘记去点那个“Renew”按钮。

Vibe 心法:信誉建立在加密的基础之上。证书续期不应依赖人类的记忆力,而应寄托于全自动的脚本周期 (Cron Job)。将重复的维护任务交给机器,是保证网站 7x24 小时“小锁头”长绿的唯一方案。


6. 本章小结

  1. 标配:现在没有 HTTPS 的网站浏览器会直接报红。
  2. 自动:能用 Vercel 自动管就别自己管。
  3. Let's Encrypt:推进互联网加密的最大功臣,独立开发者的好朋友。