使用 acme.sh + Cloudflare 申请通配符 SSL 证书并部署到宝塔面板(支持自动续期)

场景说明

适用目标:

  • 你希望为主域名 example.com 和所有二级域名 *.example.com 配置 HTTPS。
  • 你使用的是宝塔面板管理网站,使用的是 nginx。
  • 你希望实现自动续期、无需人工干预。

✅第一步:配置 Cloudflare API 令牌

  1. 登录 Cloudflare
  2. 点击右上角->配置文件->api令牌
  3. 创建 API 令牌,如下:
编辑区域dns->区域资源(设置账户的所有区域,右侧选择邮箱)
->客户端ip运算符选择:在,ip设置为服务器ip
  1. 创建成功后,复制你的 Token。
  2. 将 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/

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注