Vibe Tutorial
云服务器运维与项目部署

13.9 SSL证书配置实战

Tip

在 Serverless 环境下平台帮我们搞定了 SSL。但在 VPS 上,你需要自己申请、自己配置 Nginx,还要自己搞定续期。


1. 为什么要学这个?

你买了个域名,解析到了 VPS。 访问 http://domain.com 正常。 访问 https://domain.com 打不开。 Chrome 提示“不安全”,红色的警告把用户吓跑了。 你需要给你的 VPS 颁发一张“身份证”。


2. 核心概念:ACME 协议

ACME 是 Let's Encrypt 提供的自动化验证协议。

  1. Challenge: LE 给你的服务器发个“试卷”(一个随机文件)。
  2. Verify: 你的 Nginx 把“试卷”展示在 http://domain.com/.well-known/acme-challenge/ 下。
  3. Issue: LE 访问这个地址,发现答案正确,颁发证书。

3. 解决方案 (HOW)

3.1 方案 A:1Panel 全自动 (推荐)

如果你装了 13.4 的 1Panel 面板:

  1. 进入“网站” -> “证书”。
  2. 点击“申请证书”。
  3. 输入域名,选择“ACME 账户”。
  4. Confirm. 面板会自动修改 Nginx 配置,并自动建立定时任务续期。小白首选。

3.2 方案 B:ACME.sh 脚本 (极客)

如果你喜欢命令行,acme.sh 是最强的工具。

# 1. 安装
curl https://get.acme.sh | sh

# 2. 申请证书 (使用 Nginx 模式)
acme.sh --issue -d mydomain.com --nginx

# 3. 安装证书到指定目录
acme.sh --install-cert -d mydomain.com \
--key-file       /etc/nginx/ssl/key.pem  \
--fullchain-file /etc/nginx/ssl/cert.pem \
--reloadcmd     "service nginx force-reload"

3.3 证书申请流程图

graph TD
    User["VPS (acme.sh/1Panel)"] -->|"Step 1: 申请"| CA["Let's Encrypt (CA)"]
    
    CA -->|"Step 2: 随机 Token"| User
    User -->|"Step 3: 暴露 Token (HTTP)"| Web["Nginx (.well-known)"]
    
    CA -->|"Step 4: 验证 Token"| Web
    
    CA --"Step 5: 验证通过"--> Issue["颁发证书 (.pem)"]
    Issue -->|"Step 6: 部署"| Nginx["Nginx"]
    
    style CA fill:#fff9c4,stroke:#fbc02d
    style Issue fill:#c8e6c9,stroke:#2e7d32

4. 避坑指南

❌ 不要这样做 ✅ 应该这样做 为什么
封锁 80 端口 开放 80 端口 ACME 验证必须走 HTTP 80 端口。如果安全组封了,Let's Encrypt 访问不到你的“试卷”,证书永远申请不下来。
盲目泛域名 单域名证书 申请 *.example.com 需要配置 DNS API,非常复杂。如果你只有 www@,直接申请包含这两个的单域名证书即可,简单 10 倍。
坚持 RSA 拥抱 ECC ECC 证书更小、更快、更安全,是现代标准。

5. 真实案例

Story

2022年,Nginx 的 404

很多开发者申请证书失败,报错 Verify error: 404。 排查了一下午,发现是 Nginx 配置里写了 location / { return 301 https://$host$request_uri; }。 导致 Let's Encrypt 访问 .well-known 时被强制跳转到了 HTTPS,而此时 HTTPS 证书还没申请下来,连接失败。

Vibe 心法:80 端口是 ACME 验证的必经之路。在追求全站强制 HTTPS 的过程中,不要把自己锁在门外。确保 .well-known 目录的请求能被优先处理,不被全局跳转规则误杀。


6. 本章小结

  1. 1Panel:让证书申请变成了“点击一下”。
  2. 80 Port:是证书验证的必经之路。
  3. Automation:没有自动续期的证书,早晚会过期。