作者:12年OTA公司资深程序员适合人群:个人站长、全栈开发者、DevOps初学者
🎯 引言:为什么你的网站必须上 HTTPS?
在如今的互联网环境中,HTTPS 早已不是“可选项”,而是网站的“标配”:
- 🔒 数据安全:保障用户数据传输安全,防止中间人攻击。
- 🏆 信任背书:浏览器地址栏的“小绿锁”能显著提升用户信任度。
- 🚀 SEO 优化:搜索引擎(如 Google、百度)对 HTTPS 站点有排名加权。
- 📝 合规要求:国内域名备案及小程序开发均强制要求 HTTPS。
对于个人站长或小型项目,我们完全没必要花冤枉钱买商业证书。Let’s Encrypt 提供的免费证书配合 Certbot 工具,不仅能实现全自动申请,还能自动续期,彻底解决“每3个月手动换证书”的烦恼。
本文基于 腾讯云 Ubuntu 22.04 LTS + Nginx 环境,带你从零开始,避开所有坑,一次性搞定 HTTPS 自动化部署。
💡 一、市面上有哪些靠谱的免费 SSL 证书?
在开始实操前,我们先盘点一下主流方案,方便你根据需求选择:
| | | | |
|---|
| Let's Encrypt | | | 全球最流行,开源免费,工具链成熟(Certbot) | |
| ZeroSSL | | | | |
| 云厂商免费版 | | | | |
| Cloudflare SSL | | | | |
| Buypass Go SSL | | | | |
💡 为什么本文首选 Let's Encrypt?虽然腾讯云控制台也提供免费证书,但必须手动续期。一旦忘记,网站就会报“不安全”。而 Let's Encrypt 配合 Certbot 可以实现全自动静默续期,真正做到了“一次配置,终身无忧”。
云厂商免费版的SSL证书,对于负载均衡和对象存储COS是可以一键托管,自动续期,但是对于Linux服务器,还是需要单独下载证书,上传到服务器上
🛠️ 二、前期准备(3个核心条件)
- 服务器:腾讯云 Ubuntu 服务器(22.04 LTS),已安装 Nginx。
- 域名:已完成 ICP 备案(国内服务器必需),且解析指向服务器公网 IP。
- 权限:拥有
root 或 sudo 权限,且服务器能正常访问外网。
🚀 三、核心操作流程(分步实操)
Step 1: 更新系统软件包
确保后续安装的工具是最新版本,避免兼容性问题:
sudo apt updatesudo apt upgrade -y
Step 2: 安装 Certbot 及 Nginx 插件
Certbot 是官方推荐的自动化工具。
⚠️ 踩坑预警:包名变了!很多旧教程会教你运行 sudo apt install python-certbot-nginx,但在 Ubuntu 20.04/22.04 上这会报错!因为 Python 默认版本已升级为 Python3。
✅ 正确命令请直接复制:
sudoaptinstall certbot python3-certbot-nginx -y
安装完成后,输入 certbot --version 看到版本号即表示成功。
Step 3: 一键申请并配置证书
Certbot 最强大的地方在于它能自动修改 Nginx 配置文件。执行以下命令:
sudo certbot --nginx-d yourdomain.com -d www.yourdomain.com
(请将 yourdomain.com 替换为你的实际域名)
交互过程说明:
- 选择是否强制跳转 HTTPS(强烈建议选择 2:Redirect,将所有 HTTP 请求自动转为 HTTPS)。
等待片刻,出现 Congratulations! 提示即表示成功。证书文件默认存储在 /etc/letsencrypt/live/你的域名/ 目录下。
Step 4: 放行端口(双重保险)
如果证书申请成功但浏览器无法访问,通常是端口没开。你需要检查两层防火墙:
1. 腾讯云安全组(外部防线)
登录腾讯云控制台 -> 云服务器 -> 安全组 -> 入站规则:
2. Ubuntu UFW 防火墙(内部防线)
在终端执行:
sudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw reload
Step 5: 验证与自动续期测试
- 浏览器验证:访问
https://你的域名.com,查看是否有“小绿锁”。 - 续期模拟测试:Let's Encrypt 证书有效期为 90 天,Certbot 会自动续期。你可以运行以下命令模拟测试:
sudo certbot renew --dry-run
若输出 Congratulations, all simulated renewals succeeded.,说明自动续期功能完美运行。
❓ 四、实战避坑指南(常见问题 Q&A)
Q1: 提示 "Could not bind to port 80" 怎么办?
原因:80 端口被其他程序(如 Apache 或另一个 Nginx 进程)占用了。解决:停止占用端口的服务,或者先临时关闭 Nginx (sudo systemctl stop nginx),申请完证书后再启动。
Q2: 浏览器显示“不安全”或连接超时?
排查顺序:
- 检查 UFW 防火墙状态 (
sudo ufw status)。 - 检查 Nginx 配置是否正确 (
sudo nginx -t)。
Q3: 自动续期失败了怎么办?
解决:查看日志定位原因:
sudocat /var/log/letsencrypt/letsencrypt.log
通常是因为 80 端口在续期那一刻被占用,或者服务器网络无法访问 Let's Encrypt 的验证服务器。
📊 五、总结与建议
对于腾讯云 Ubuntu 用户,Let's Encrypt + Certbot 是目前性价比最高、维护成本最低的 HTTPS 方案。
核心要点回顾:
- 安装包名要用
python3-certbot-nginx。 - 记得在腾讯云控制台和系统内部同时放行 80/443 端口。
- 务必运行
--dry-run 确认自动续期功能正常。
写在最后:如果你也是个人开发者或站长,建议花 10 分钟完成这个配置,从此告别半夜收到“证书即将过期”的焦虑邮件。
觉得有用,请点个「在看」或「转发」,让更多开发者少走弯路!🚀
如果你觉得这篇文章有帮助,欢迎分享给更多开发者! ✨