泛域名证书必须通过 DNS 验证申请,需在支持 ACME 的 DNS 平台配置 API 权限、宝塔中启用 DNS API 模式并正确填写凭证、提交时严格按格式填写域名(如 example.com,*.example.com),并手动添加 Shell 脚本计划任务实现自动续期。

泛域名证书(如 *.example.com)必须通过 DNS 验证才能申请,HTTP 或文件验证方式在技术上不可行——这是 Let’s Encrypt 的 ACME 协议强制要求,不是宝塔或你配置的问题。
第一步:确保 DNS 解析已正确托管并开通 API 权限
泛域名证书本身不依赖服务器上的网站绑定,而是依赖你对整个域名的控制权证明。所以你要先确认:
- 你的域名 DNS 解析服务托管在支持 ACME 的平台,比如阿里云云解析、Cloudflare、腾讯云 DNSPod;
- 已创建具备足够权限的子账号(非主账号): • 阿里云需授予 Alidns:DescribeDomainRecords 和 Alidns:AddDomainRecord; • Cloudflare 的 API Token 必须包含 Zone:Read 和 DNS:Edit;
- 在对应平台后台生成并妥善保管 AccessKey ID / Secret 或 Token,注意大小写和空格,复制时别带换行。
第二步:在宝塔中启用 DNS API 模式并填写凭证
宝塔默认的 SSL 申请界面只显示「文件验证」,泛域名必须手动切换路径:
- 进入「网站」→「SSL」→ 点右上角「设置」;
- 勾选「使用 DNS API 验证」,下拉选择你的 DNS 服务商;
- 填入刚才准备好的密钥(如 Ali_Key / Ali_Secret),然后点「测试 DNS API」——成功才代表权限和网络通路都没问题;
- 如果测试失败,不要跳过,重点检查 RAM 权限是否完整、密钥是否粘贴错误、域名是否属于该账号管理范围。
第三步:正确填写域名并提交申请
ACME 对泛域名格式非常严格,常见错误都会被直接拒签:
- 必须同时包含根域和泛域名:example.com,*.example.com(英文逗号分隔,不能有空格);
- 只填 *.example.com → 浏览器访问 example.com 会提示证书不匹配;
- 填 **.example.com、*.sub.example.com、* → 全部无效,ACME 直接报错;
- 想覆盖 www → 可加为 www.example.com,example.com,*.example.com,但单张证书最多 100 个域名,别堆太多。
第四步:配置自动续期(关键!宝塔不会默认开启)
DNS 模式申请成功后,证书有效期仍是 90 天,但宝塔不会自动创建续期任务。到期前 20 天面板右上角会有黄色提醒,但「自动续签」开关是灰色的——这不是 bug,是设计如此。
- 进「计划任务」→「添加计划任务」;
- 类型选「Shell 脚本」;
- 命令填:
/www/server/panel/pyenv/bin/python /www/server/panel/class/acme_.py --renew=your_site_name(把 your_site_name 替换为实际站点名); - 执行周期建议设为每月 1 日 03:00,避开高峰期;
- 确保续期时使用的 DNS API 凭据与首次申请一致,否则会失败。


















