场景说明
适用目标:
- 你希望为主域名
example.com
和所有二级域名*.example.com
配置 HTTPS。 - 你使用的是宝塔面板管理网站,使用的是 nginx。
- 你希望实现自动续期、无需人工干预。
✅第一步:配置 Cloudflare API 令牌
- 登录 Cloudflare
- 点击右上角->配置文件->api令牌
- 创建 API 令牌,如下:
编辑区域dns->区域资源(设置账户的所有区域,右侧选择邮箱)
->客户端ip运算符选择:在,ip设置为服务器ip
- 创建成功后,复制你的 Token。
- 将 Token 写入服务器环境变量,并持久保存:
echo 'export CF_Token="这里写token"' >> ~/.bashrc
source ~/.bashrc
✅ 第二步:安装 acme.sh(如果未安装)
curl https://get.acme.sh | sh -s email=my@example.com
网络问题参考:https://github.com/acmesh-official/acme.sh/wiki/Install-in-China
✅ 第三步:使用 DNS 验证方式申请通配符证书
acme.sh --issue --dns dns_cf -d example.com -d '*.example.com'
说明:
--dns dns_cf
表示使用 Cloudflare DNS 验证。-d example.com
+-d '*.example.com'
可以同时覆盖主域名和所有二级域名。
✅ 第四步:安装证书到宝塔面板使用的路径
执行以下命令将证书部署到宝塔指定路径(Nginx 默认使用):
acme.sh --install-cert -d example.com \
--key-file /www/server/panel/vhost/cert/example.com/privkey.pem \
--fullchain-file /www/server/panel/vhost/cert/example.com/fullchain.pem \
--reloadcmd "nginx -s reload"
说明:
- 此路径是宝塔面板自动读取证书的路径。
- example.com对应自己的域名
- 执行后会立即 reload nginx,替换当前证书。
✅ 第五步:在宝塔面板站点绑定域名
在宝塔面板对应站点绑定所有需要的域名,例如:
example.com
www.example.com
api.example.com
cdn.example.com
使用同一个站点绑定多个域名,都会匹配证书 *.example.com
。
✅ 第六步:自动续期机制
acme.sh 会自动续期,无需人工干预:
- 默认每天运行 cron job 检查是否需要续期。
- 如果续期成功,会自动执行你之前的
--install-cert
脚本,包括 reload nginx。 - 只要 Cloudflare Token 没失效、域名 DNS 没变更,续期就会持续正常工作。
你可以手动测试续期:
acme.sh --renew -d example.com --force
🔁 可选:查看证书路径
证书文件一般位于:
/root/.acme.sh/example.com/
安装后的宝塔使用路径:
/www/server/panel/vhost/cert/example.com/