主题
68 块钱的服务器,让我花 2000 买 SSL 证书?这波“智商税”我不交!
前几天收到阿里云短信,说我的免费 SSL 证书要过期了。我想着这还不简单,再申请一张不就完事了?
结果打开控制台一看,瞬间傻眼:免费证书只能用一次了?!续费居然要好几千?!

我的天,我那台阿里云乞丐版服务器才 68 块钱一年(用来跑个博客刚好),这 HTTPS 的成本比服务器本身还贵几十倍?这还能忍?
既然此路不通,那必须得另辟蹊径。我翻遍了全网,又跟 DeepSeek 聊了半天,终于让我找到了 Let's Encrypt 这个神器。不仅完全免费,而且还能自动续期,这不就是我要的“永久白嫖”方案吗?
不过,在 CentOS 7 这个“老古董”系统上折腾,确实有不少坑。我踩了一下午的雷,把这套完美避坑指南整理出来了。照着做,让你少走弯路,立省 2000 元!
1. 准备工作:别急着敲命令
首先确认下你的环境跟我一不一样:
- 系统:CentOS 7.x(这系统真有点老了,但这年头能跑就行)
- Web 服务:Nginx
- 域名:比如我的
barebear.cn(一定要先解析到你的服务器 IP!) - 权限:你是管理员(root 或者有 sudo 权限)
确认无误?那我们开始。
2. 第一个大坑:千万别用 yum 装 Certbot!
很多教程上来就让你 yum install certbot,千万别信!
CentOS 7 自带的 yum 源里的 Certbot 版本太老了(1.11.0),装完运行的时候会直接给你报 Python 依赖错误: ImportError: cannot import name UnrewindableBodyError
这一步卡了我好久,最后发现官方推荐的方法是用 snap 安装。
正确姿势:拥抱 snap
虽然麻烦点,但这是唯一稳妥的路子。
第一步:安装 snapd
bash
# 先装 EPEL 源
sudo yum install epel-release -y
# 再装 snapd
sudo yum install snapd -y
# 启动 snapd 通信套接字
sudo systemctl enable --now snapd.socket
# 做个软链接,方便以后用
sudo ln -s /var/lib/snapd/snap /snap第二步:一定要等!等!等!
装完 snapd 之后,它后台需要初始化(seeding)。这时候如果你心急火燎地去装 Certbot,绝对会报错: error: too early for operation, device not yet seeded
避坑指南:去倒杯水,刷个短视频,等个 1-2 分钟。或者你用这个命令盯着它:
bash
snap changes看到状态变成 Done 了再继续。如果等了半天还没动静,重启一下 snapd:sudo systemctl restart snapd。
第三步:安装最新版 Certbot
bash
# 安装核心 snap
sudo snap install core; sudo snap refresh core
# 安装 Certbot(加 --classic 参数)
sudo snap install --classic certbot
# 做个软链接,让你可以直接敲 certbot 命令
sudo ln -s /snap/bin/certbot /usr/bin/certbot到这里,最难的一步已经跨过去了。
3. 见证奇迹:一键配置 HTTPS
这一步真的太爽了,不需要你手动改 Nginx 配置文件,Certbot 全自动搞定。
bash
sudo certbot --nginx执行后,它会问你几个问题:
- 邮箱:填个真实的,万一证书出问题能收到邮件。
- 同意条款:输入
Y回车。 - 选择域名:它会自动读取你的 Nginx 配置,列出
barebear.cn和www.barebear.cn。- 直接回车(默认全选),或者输入
1,2回车。
- 直接回车(默认全选),或者输入
然后,屏幕上会刷一堆代码,最后出现 Congratulations! 的时候,恭喜你,你的网站已经穿上了 HTTPS 的防弹衣!

它甚至贴心地帮你把 HTTP 自动跳转到了 HTTPS,再也不用担心用户访问不安全了。
4. 第二个大坑:为什么浏览器还是显示“不安全”?
配置完我兴冲冲地打开 Chrome 访问 https://barebear.cn,结果地址栏还是有个红色的“不安全”?!
我当时心里一凉:难道翻车了?
如果你也遇到这个问题,别慌。这是浏览器缓存在搞鬼。尤其是如果你之前访问过 HTTP 版本,浏览器记住了之前的 301 重定向或者 HSTS 状态。
解决方法:
- 最简单:打开浏览器的“无痕模式/隐私模式”访问,如果显示绿色小锁,说明配置没问题。
- 彻底解决:
- 清除浏览器缓存(Ctrl+Shift+Del)。
- Chrome 地址栏输入
chrome://net-internals/#hsts,在 Delete domain security policies 下面输入你的域名,点 Delete。
只要看到那个绿色的小锁头,心里就踏实了。
5. 懒人福音:全自动续期
Let's Encrypt 的证书有效期只有 90 天。你可能会问:“那我岂不是每三个月就要折腾一次?”
放心,Certbot 安装的时候就已经给你设好了自动续期任务。它会每隔 12 小时检查一次,快过期的时候自动帮你续上。
你可以跑个命令测试一下这个机制是不是正常工作:
bash
sudo certbot renew --dry-run只要不报错,以后你就再也不用管它了。这就是真正的“一次配置,终身受益”。
6. 写在最后
折腾这一圈下来,不仅省了几千块钱,还顺手把 HTTPS 的原理搞懂了。其实很多时候,所谓的技术门槛,无非就是信息差。
现在看着浏览器地址栏那个安全的小锁头,是不是觉得特别有成就感?
如果你在操作过程中遇到了其他奇葩问题,或者这篇避坑指南帮到了你,欢迎在评论区留言或者点个赞告诉我! 你的支持是我继续分享“省钱黑科技”的动力!
附:Nginx 配置变更一览
Certbot 改完后的配置大概长这样(不用自己写,看看就行):
nginx
server {
listen 80;
server_name barebear.cn www.barebear.cn;
return 301 https://$host$request_uri; # HTTP 强转 HTTPS
}
server {
listen 443 ssl;
server_name barebear.cn www.barebear.cn;
ssl_certificate /etc/letsencrypt/live/barebear.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/barebear.cn/privkey.pem;
# ... 其他 SSL 优化参数 ...
}最后再看一下效果吧

