宝塔免费ssl申请失败主因是caa记录阻止签发或http-01验证被拦截;需先清除或修正caa记录(如删除0 issue ";"),再切换为dns-01验证(推荐litessl+阿里云dns子账号api),避开端口、跳转与网络限制。

宝塔面板免费 SSL 证书申请失败,八成不是配置错,而是被 CAA 记录或验证方式卡住——尤其当你看到 Failed to verify _acme-challenge 或日志里反复出现 CAA record forbids issuance,就得立刻查 CAA 并切 DNS 验证。
检查 CAA 记录是否阻止签发
CAA(Certification Authority Authorization)是域名级白名单机制,如果它明确禁止 Let’s Encrypt 或 LiteSSL 签发证书,申请会直接被拒,连验证环节都进不去。
- 执行
dig yourdomain.com CAA +short,若返回类似0 issue "letsencrypt.org"或0 issuewild "sectigo.com"是允许的;但若返回0 issue ";"或0 issue "unknown-ca.com",就说明当前 CA 被明确拒绝 - 常见坑:你没手动加过 CAA,但注册商(如腾讯云、DNSPod)默认加了
0 issue ";"——这个值等于“禁止所有 CA”,必须删掉或覆盖 - 修复方法:登录你的 DNS 管理后台(阿里云/腾讯云/Cloudflare),找到 CAA 记录,删除所有现有条目,或新增两条:
@ CAA 0 issue "letsencrypt.org"@ CAA 0 issuewild "letsencrypt.org" - 改完别急着重试,等 DNS 全球生效(
dig @1.1.1.1 yourdomain.com CAA +short多地验证一致才算数)
为什么必须用 DNS 验证而非 HTTP 验证
HTTP-01 验证依赖 80 端口可访问、无跳转、伪静态不拦截、根目录可写 ——任意一环断掉就失败,且错误现象高度相似(都是“正在验证”不动)。DNS-01 绕开全部这些,只靠 TXT 记录生效即可。
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
- 泛域名(
*.example.com)强制要求 DNS-01,HTTP-01 不支持 - 国内服务器常因 IPv6 优先或境外网络限制,导致 Let’s Encrypt 的 HTTP 请求超时(
curl: (7) Failed to connect to 2606:4700::),DNS 查询不受影响 - 宝塔里勾选「DNS 验证」后,它不会碰
.well-known/acme-challenge目录,也不会读 Nginx 配置,彻底避开强制 HTTPS、CDN 跳转、伪静态等干扰项 - 注意:DNS 验证必须确保你的 DNS 服务商支持 API(阿里云/腾讯云/Cloudflare 可以;自建 Bind 或小厂面板不行)
阿里云 DNS 下 LiteSSL+DNS 验证实操要点
LiteSSL 是国内节点,配合阿里云 DNS API,成功率远高于 Let’s Encrypt + HTTP,且自动续签稳定。但 AK 配置极易踩坑。
- 绝不能用阿里云主账号的
AccessKey ID和AccessKey Secret——会被安全策略静默拦截,报错There is a risk of leakage of this AccessKey - 必须新建 RAM 子账号,在权限策略中只授予
AliyunDNSFullAccess,不要给其他权限 - 在宝塔「SSL → 免费申请」页,服务商选
LiteSSL,验证方式选DNS 验证,DNS 服务商选阿里云 DNS,再填入子账号的 AK - 填完别点“立即申请”,先确认域名已在阿里云 DNS 控制台正确托管(不是仅解析,而是“已添加到云解析 DNS”)
- 首次申请成功后,宝塔会自动在
_acme-challenge.yourdomain.com添加一条 TXT 记录;你可在阿里云后台实时看到该记录,5 分钟内全球可查即算通过
CAA 和验证方式是两个独立开关,改一个不一定解决问题。真正稳定的路径是:先清空或修正 CAA,再切到 DNS 验证(推荐 LiteSSL),并确保 DNS API 凭据来自最小权限子账号——这三步缺一不可,漏掉任何一步都可能让申请卡在“正在验证”不动。










