宝塔面板申请SSL证书时DNS验证失败,可通过三种方法解决:一、配置阿里云API密钥启用DNS验证插件;二、使用acme.sh脚本手动触发DNS-01验证;三、在阿里云DNS控制台手动添加TXT记录后宝塔重试验证。

如果您在宝塔面板中为域名申请SSL证书时遇到“DNS验证失败”或“无法自动添加TXT记录”的问题,则可能是由于宝塔未正确调用阿里云DNS API完成域名所有权验证。以下是实现宝塔面板与阿里云DNS联动、完成SSL证书自动验证的多种方法:
一、通过阿里云API密钥配置DNS验证插件
该方法利用宝塔内置的DNS验证插件,通过阿里云AccessKey ID和AccessKey Secret授权,使宝塔可直接调用阿里云OpenAPI写入TXT记录,从而满足Let’s Encrypt的DNS-01挑战要求。
1、登录阿里云控制台,进入访问控制(RAM)→安全信息管理→AccessKey管理,创建一对新的AccessKey(务必勾选“仅用于OpenAPI”权限)。
2、复制生成的AccessKey ID与AccessKey Secret,进入宝塔面板,点击左侧【网站】→【SSL】→【申请证书】→选择【DNS验证】→【DNS手动验证】旁的【设置DNS API】按钮。
3、在DNS API配置弹窗中,选择【阿里云DNS】,粘贴AccessKey ID与AccessKey Secret,点击【测试连接】,确认显示连接成功后保存。
4、返回证书申请页,输入域名,勾选【自动验证DNS】,点击【申请】,宝塔将自动创建并删除TXT记录完成验证。
二、使用acme.sh脚本配合阿里云DNS手动触发验证
当宝塔内置DNS插件不可用或版本过旧时,可绕过面板UI,直接在服务器终端运行acme.sh脚本,通过环境变量注入阿里云凭证,独立完成DNS-01验证流程。
1、以root用户登录服务器,在终端执行命令安装acme.sh:curl https://get.acme.sh | sh -s email=your@email.com。
2、执行source ~/.acme.sh/acme.sh.env加载环境,然后导出阿里云凭证:export ALIYUN_ACCESS_KEY="your_access_key_id" 与 export ALIYUN_ACCESS_KEY_SECRET="your_access_key_secret"。
3、运行证书签发命令:~/.acme.sh/acme.sh --issue --dns dns_ali -d example.com -d www.example.com(请将example.com替换为实际域名)。
4、验证成功后,执行~/.acme.sh/acme.sh --install-cert -d example.com --cert-file /www/server/panel/vhost/cert/example.com/fullchain.pem --key-file /www/server/panel/vhost/cert/example.com/privkey.pem,将证书部署至宝塔默认路径。
三、在阿里云DNS控制台手动添加TXT记录后触发宝塔重试
该方法不依赖API权限,适用于临时调试或安全策略禁止API密钥外泄的场景;宝塔支持在DNS记录就绪后主动轮询并完成剩余验证步骤。
1、在宝塔面板【网站】→【SSL】→【申请证书】页面,选择【DNS验证】,点击【下一步】后,页面将显示待添加的TXT主机名(如_acme-challenge.example.com)与对应值(一段随机字符串)。
2、登录阿里云DNS控制台,进入对应域名的解析设置页,点击【添加记录】,记录类型选【TXT】,主机名填写_acme-challenge(不含域名后缀),记录值粘贴页面提供的验证字符串,TTL设为120秒。
3、等待DNS全球生效(可通过dig -t txt _acme-challenge.example.com +short确认返回值一致),返回宝塔证书申请页,点击【重新验证】按钮。
4、宝塔将在数秒内检测到TXT记录存在,自动完成验证并下载证书,状态栏显示验证成功,证书已签发。










