宝塔面板配置免费泛域名SSL证书与DNS自动续期记录

核心导读:记录在宝塔面板中通过 DNS 验证申请 Let's Encrypt 泛域名 SSL 证书的完整流程,以及配置 API 密钥实现静默自动续期,解决多子域名维护繁琐的问题。

最近在折腾几个自建小工具,每开一个新的二级域名(比如 api.xxx.com、test.xxx.com),都要在宝塔里重新申请一次单域名证书。几个月下来,服务器里挂了一大堆到期时间各不相同的证书,管理起来很琐碎。

索性花点时间把它们统一收拢成 Let's Encrypt 的通配符泛域名证书(*.example.com),顺便打通 DNS API 实现静默自动续期。这里把具体的配置步骤和踩过的两个小坑记录下来,备忘也供参考。

1. 为什么必须使用 DNS 验证方式?

申请单域名证书时,宝塔默认通常走的是「文件验证」(HTTP-01 挑战),Let's Encrypt 的验证服务器直接访问你站点根目录下的临时文件即可。这种方式操作简单,但无法用于申请泛域名证书。

泛域名覆盖了整个主域下所有的二级域名,CA 机构必须确认你对该顶级域名的 DNS 拥有控制权,因此必须走「DNS 验证」(DNS-01 挑战),即在域名解析后台添加一条特定的 TXT 记录。

如果靠纯手工添加 TXT 记录,每到 90 天证书过期前就得人工手动加一次,基本无法实现自动化。要做到完全免维护的自动续期,核心在于让宝塔通过 DNS 服务商提供的 API 接口,全自动添加并删除验证用的 TXT 记录

2. 准备 DNS 凭据(API 密钥)

在宝塔面板配置前,需要先去你的域名 DNS 解析托管商后台获取 API 访问凭据。出于服务器安全考虑,强烈建议遵循最小权限原则配置:

DNS 服务商推荐凭据类型安全建议与说明
CloudflareAPI Token(自定义令牌)权限只需勾选 Zone.DNS:Edit,限制在具体域名,切勿直接暴露全局 Global API Key
阿里云RAM 访问控制子账号新建专门子账号,仅赋予 AliyunDNSFullAccess 权限,生成独立的 AccessKey / Secret
腾讯云 / DNSPodDNSPod Token / 腾讯云 API 密钥推荐使用专用的 DNSPod Token,权限限制在 DNS 解析维度即可

拿到对应的 Key 和 Secret 后,回到宝塔面板,在申请界面先输入并保存这些凭据,后续其他站点使用时就无需重复填写了。

3. 申请泛域名证书的实操步骤

准备好 API 凭据后,直接进入站点设置页面开始申请:

  1. 进入宝塔后台,找到目标站点,点击「设置」->「SSL」-> 选择「Let's Encrypt」。
  2. 关键填写格式:域名列表里必须同时填入根域名和泛域名,例如:
text
yourdomain.com *.yourdomain.com
很多人只填了 *.yourdomain.com,这样会导致访问不带 www 的裸域名时直接报证书不匹配错误。
  1. 验证方式选择「DNS 验证」,服务商下拉选择你托管域名的平台(如 Cloudflare / 阿里云 / 腾讯云),填入对应的 API 凭据。
  2. 点击「申请」,宝塔会在后台自动调用 API 写入 _acme-challenge 的 TXT 解析记录,并等待全球解析生效后完成验证并签发证书。

申请成功后,宝塔会自动将公钥和私钥填入配置并开启 HTTPS。此时该域名下的所有二级子站点,都可以共用这一张泛域名证书。

4. 自动续期确认与排查备忘

Let's Encrypt 泛域名证书的有效期通常为 90 天。宝塔内置了计划任务机制,正常情况下不需要人工干预,但建议在配置完成后做一次检查确认:

  1. 检查定时任务:进入宝塔「计划任务」,检查是否存在一条名为 续签Let's Encrypt证书 的默认任务。该任务默认每天凌晨会扫描服务器上的所有证书,当证书剩余有效期不足 30 天时,会自动调用 acme 脚本发起续期申请。
  2. DNS 生效延迟报错:如果首次申请或续签时提示 DNS TXT record verify failed,大概率是因为 DNS 解析同步延迟。部分国内服务商的 API 写入虽然成功,但各地区公共 DNS 解析生效需要数十秒,偶尔会导致 Let's Encrypt 抓取超时。如果频繁遇到,可以尝试在宝塔系统设置中将默认的 DNS 服务器地址调整为 223.5.5.51.1.1.1
  3. 多站点共用证书更新:如果你手动将申请好的泛域名证书复制贴到了其他子站点的配置里,续期时主站点证书虽然更新了,但其他静态复制的站点不会自动热重载。对于多站点环境,更规范的做法是在宝塔中开启证书夹,统一从证书夹选择证书进行部署,或者配置 Nginx 配置文件直接引用主站点的 fullchain.pemprivkey.pem 路径,这样证书续期后只需重载一次 Nginx 即可全量生效。

常见问题与解答 (FAQ)

Q 申请了 *.example.com 泛域名证书,主域名 example.com 可以直接使用吗?

不能直接使用,通配符证书只覆盖子域名。申请时必须在域名框中同时输入 example.com 和 *.example.com 两个域名,签发出来的证书才能同时保护裸域名和所有二级子域名。

Q 配置好 DNS 自动续期后,需要手动去点续订吗?

不需要。宝塔的后台定时任务每天都会轮询检测,只有当证书有效期小于 30 天时才会自动调用 DNS 接口完成静默续订并重载 Nginx。

返回运维知识库