如今没有HTTPS的网站寸步难行:浏览器标”不安全”、搜索引擎降权、支付接口拒绝对接。好消息是SSL证书早就不用花钱了——Let’s Encrypt提供免费、受全浏览器信任的证书,配好自动续期后一劳永逸。本文给出面板党和命令行党两套方案。
一、前置条件
只需两点:域名已解析到你的服务器IP(香港节点免备案,解析即生效)、服务器80/443端口对外开放。没有服务器的话,机器云香港VPS支持24小时免费试用,足够完整练习本教程。
二、方案A:宝塔/1Panel面板一键申请(2分钟)
面板用户最简单:进入站点设置 → SSL → 选择 Let’s Encrypt → 勾选域名 → 申请。成功后开启“强制HTTPS”,面板会自动处理续期。到这一步,90%的用户已经可以关闭本文了。
三、方案B:Certbot命令行(5分钟,更通用)
以 Debian/Ubuntu + Nginx 为例:
apt install certbot python3-certbot-nginx -y
certbot --nginx -d example.com -d www.example.com
Certbot会自动完成域名验证、签发证书并改写Nginx配置(含HTTP跳转HTTPS)。验证自动续期是否就绪:
certbot renew --dry-run
Let’s Encrypt证书有效期90天,Certbot安装时已注册系统定时任务自动续期,无需人工干预。
四、进阶:泛域名证书(*.example.com)
子域名很多的站群或多应用场景,可申请泛域名证书,需改用DNS验证方式:
certbot certonly --manual --preferred-challenges dns -d "*.example.com" -d example.com
按提示在域名DNS添加指定的TXT记录后继续。如果DNS托管在Cloudflare等支持API的服务商,可安装对应插件(如 python3-certbot-dns-cloudflare)实现泛域名证书的全自动续期。
五、常见报错排查
- 验证失败(Connection refused):80端口未放行或被占用,检查防火墙与Nginx状态;
- DNS问题(NXDOMAIN):域名解析未生效,先
ping 域名确认指向正确IP; - 申请频率限制:同一域名每周签发有上限,调试时加
--staging参数用测试环境,跑通后再正式签发; - 证书到期没续上:多为定时任务被删或端口关闭,跑一次
certbot renew --dry-run即可定位。
配好HTTPS后顺手开启HTTP/2,安全与速度双收。整个流程在免费试用VPS上演练一遍只需十分钟,从此告别”不安全”警告。