DNS验证超时需检查DNS服务商API支持与配置、手动添加TXT记录、延长超时时间至1800秒、切换HTTP-01验证或排查CNAME/CDN/DNSSEC冲突。

如果您在宝塔面板中为域名申请或续签SSL证书时收到“DNS验证超时”提示,则说明Let’s Encrypt在执行DNS-01验证过程中,未能及时检测到您域名的TXT解析记录。以下是解决此问题的步骤:
一、检查DNS服务商是否支持API自动解析
Let’s Encrypt通过DNS-01方式验证需向域名DNS服务商写入特定TXT记录,若DNS服务商不提供API接口或API配置错误,将导致记录无法自动添加或更新,从而触发超时。需确认当前使用的DNS服务商是否在宝塔支持列表内,并已正确填写API密钥。
1、登录宝塔面板,进入【网站】→对应站点→【SSL】→【申请】→点击【DNS验证】右侧的【设置】按钮。
2、核对所选DNS服务商是否与您实际使用的平台一致,例如阿里云、腾讯云、Cloudflare、DNSPod等。
3、检查API密钥字段是否已填入正确的AccessKey ID和AccessKey Secret(阿里云)或Token(Cloudflare),且该密钥具备DNS解析的读写权限。
4、若使用自建DNS或小众服务商,宝塔可能未内置其API插件,此时需手动完成DNS验证或切换至支持的DNS平台。
二、手动添加TXT解析记录并跳过自动验证
当自动API方式不可用时,可临时改用手动DNS验证模式,由Let’s Encrypt生成TXT记录值,您自行添加至DNS管理后台,再触发验证重试,避免超时等待。
1、在SSL申请页面,选择【DNS验证】后,点击【手动验证】选项(部分版本显示为“手动添加TXT记录”)。
2、点击【获取验证信息】,页面将显示一条待添加的TXT记录:主机名通常为_acme-challenge.您的域名,记录值为一串随机字符串。
3、登录您的DNS服务商控制台,在对应域名下新增一条TXT记录,主机名填写_acme-challenge,记录值粘贴完整字符串,TTL建议设为600秒以内。
4、等待DNS全球生效(可通过dig _acme-challenge.您的域名 TXT +short命令或https://dnschecker.org验证),确认返回值一致后,回到宝塔点击【验证】按钮。
三、延长DNS验证等待时间
宝塔默认DNS验证超时阈值为600秒,部分DNS服务商(如某些企业级DNS或本地缓存节点)传播延迟较长,可能超过该时限。可通过修改宝塔内置验证脚本参数,延长等待窗口。
1、使用SSH登录服务器,执行命令:sed -i "s/timeout=600/timeout=1800/g" /www/server/panel/class/acme.py。
2、重启宝塔面板服务:bt restart。
3、重新发起SSL续签操作,系统将最多等待30分钟以检测TXT记录生效。
四、更换验证方式为HTTP-01
若域名已能正常访问且Web服务运行稳定,可避开DNS环节,改用HTTP-01验证方式。该方式通过在网站根目录放置指定文件供Let’s Encrypt爬取,不依赖DNS解析时效。
1、在SSL申请界面取消勾选【DNS验证】,确保勾选【HTTP验证】。
2、确认网站已启用并绑定正确域名,且【网站目录】中的root路径可被外部直接访问。
3、检查防火墙及安全组是否放行80端口,Nginx/Apache必须监听80端口且未被其他程序占用。
4、点击【申请】,宝塔将自动创建.well-known/acme-challenge/目录并写入验证文件,Let’s Encrypt通过HTTP请求校验。
五、检查域名DNS解析层级与CNAME冲突
若域名存在CNAME指向、DNSSEC启用、或使用了CDN中间层(如Cloudflare代理状态为橙色云朵),可能导致TXT记录被忽略或无法穿透,造成验证失败。
1、前往DNS管理后台,确认_acme-challenge.您的域名的解析类型为TXT,而非CNAME或其他类型。
2、若使用Cloudflare,需将该TXT记录的代理状态设为灰色云朵(DNS only),禁用代理。
3、执行命令:dig +short _acme-challenge.您的域名 TXT,观察是否返回预期值;若无返回或返回空,说明上层DNS未同步或被覆盖。
4、暂时关闭DNSSEC签名(如有),因其可能干扰新TXT记录的发布与验证。










