😄 在 CentOS Stream 9 上用 Let’s Encrypt 装 HTTPS:一场和证书、浏览器、自己较劲的故事
HTTPS 这玩意儿吧,
没装之前你觉得它很神秘,
装完之后你会发现——
它不神秘,它只是爱给你添戏。 🎭
本文不是官方文档复读机,
而是一篇 “真实踩坑纪实 + 人话翻译版 HTTPS 指南”。
适合人群:
- 会装 Nginx
- 会写 proxy_pass
- 但一碰 HTTPS 就开始怀疑人生的人
🧱 一、开局配置(不难,但很关键)
你的起点通常是这样:
- 系统:CentOS Stream 9 🐧
- Nginx:已装好,80 能访问
- 域名:A 记录已指向服务器
这时你心里只有一个朴素愿望:
“我就想要个小绿锁 🔒,别整幺蛾子。”
——放心,幺蛾子马上就来。
🧰 二、Certbot 登场(主角出场必有 BGM)
安装:
1 | sudo dnf install -y epel-release |
然后一行命令:
1 | sudo certbot --nginx -d yiqiquhuxi.cn |
Certbot 会非常热情地帮你做四件事:
1️⃣ 验证你是不是域名主人
2️⃣ 申请证书
3️⃣ 把证书塞进 /etc/letsencrypt/live/
4️⃣ 顺手改你的 Nginx 配置(重点)
这一步结束时,你会看到一句非常温柔的话:
🎉 Congratulations! You have successfully enabled HTTPS
你以为结束了?
不。
这是故事的 第一幕。
😵 三、Certbot:我帮你改了配置,不用谢
你打开 Nginx 配置一看:
咦?
我监听的是 8080,
你怎么把listen 443 ssl;写进来了?
别慌,这是 Certbot 的“直男式智能”。
它的逻辑只有一句话:
谁写了 server_name,我就改谁。
不管你是 80、8080、16601,
只要里面有:
1 | server_name yiqiquhuxi.cn; |
Certbot 就会冲进去加 HTTPS。
📌 结论:
- 这不是 Bug
- 这是“自动化没有审美”
🧠 四、正确姿势:80 是路,443 是门
经验总结一句话:
HTTP 是马路,HTTPS 是安检口。 🚪
✅ 推荐结构
HTTP(80)——别动它
1 | server { |
❌ 不要写:
1 | return 301 https://...; |
你不想跳,它就不该跳。
HTTPS(443)——单独一个 conf
1 | server { |
📌 这一步,结构就赢了一半。
🚑 五、HTTPS 一上,502 立刻出现?
别慌。
502 的真实含义只有一句话:
Nginx:我敲了后端的门,但没人应。 🚪👻
常见原因:
- proxy_pass 写错
- 后端没起
- 内网地址不可达
排查神器:
1 | curl http://后端地址 |
还有终极裁判:
1 | tail -f /var/log/nginx/error.log |
日志从不骗人。
🔥 六、HTTPS 页面里引用 HTTP 资源?浏览器不干
你会遇到一个经典场面:
首页是 https://
图片却是 http://
然后——加载失败 ❌
这不是 Nginx 抽风。
这是浏览器拍桌子:
“你都加密了,还想夹带明文?不行!” 🔐
这叫 Mixed Content(混合内容)。
真相很残酷:
❌ 你没法让 HTTPS 页面「坚持使用 HTTP 资源」
能活下来的方案只有:
- 资源也走 HTTPS(推荐)
- Nginx 反代资源
- 后端改相对路径
别和浏览器对着干,
它是甲方。
🤯 七、我没写跳转,HTTP 怎么自己变 HTTPS 了?
恭喜你,
你遇到了 HSTS。
HSTS 是什么?
一句话:
浏览器记仇。 🧠
只要你曾经告诉过它:
“这个站以后只准用 HTTPS”
它就会:
- 永久自动升级
- 不走 nginx
- 不给你反悔机会
验证方式
- 用无痕窗口
- 或清除:
1 | chrome://net-internals/#hsts |
删掉域名,再试一次。
🔁 八、证书续期:你可以忘,系统不会
Let’s Encrypt:
- 有效期 90 天
- Certbot 已自动续期
你唯一要做的:
1 | sudo certbot renew --dry-run |
看到 success,
就可以放心去摸鱼了 ☕
🏁 九、最终总结(人话版)
- Certbot 很勤快,但不懂你架构
- HTTPS 不是开关,是协议承诺
- 浏览器比 nginx 更强势
- 不要和 Mixed Content、HSTS 硬刚
HTTPS 装到最后,
拼的不是命令,
是 认知对齐。
装完证书的人很多,
真正理解它的人不多。
如果你看到这里——
🎉 恭喜,你已经是后者了。




