根本原因是let’s encrypt的http-01挑战请求未到达服务器,因80端口被屏蔽、dns解析错误、cdn代理或nginx拦截.well-known目录所致;通配符证书则需确保dns-01授权正确且acme.sh已升级。

为什么续签总卡在“验证失败”或“timeout”
根本原因不是证书过期,而是 Let’s Encrypt 发起的 HTTP-01 挑战请求压根没到达你的服务器。它会向 http://你的域名/.well-known/acme-challenge/xxx 发起明文请求,不走 HTTPS、不走 CDN 缓存、不绕防火墙——必须直通 80 端口并由 Nginx/Apache 返回文件。一旦中间任一环节断开,就显示“验证失败”。
常见断点包括:
-
80端口被云厂商安全组屏蔽(阿里云/腾讯云默认关闭) - DNS 解析未生效或指向错误 IP(比如还解析在旧服务器、CNAME 到 GitHub Pages)
- CDN 开启代理模式(Cloudflare 橙色云、又拍云加速节点),把挑战请求拦在了边缘
-
.well-known目录被 Nginx 的location ~ /\.well-known规则拒绝或重写跳转
如何确认 80 端口是否真正可访问
别只看本地 curl http://你的域名 或浏览器能打开——Let’s Encrypt 是从全球多个节点发起请求,得模拟它的视角。
执行以下检查:
- 用公网机器(如 GitHub Actions 或任意海外 VPS)运行:
curl -I http://你的域名/.well-known,返回404是正常;Connection refused或超时说明 80 端口不通 - 查端口开放状态:
telnet 你的服务器IP 80,若连不上,立刻检查云控制台安全组、服务器本地防火墙(ufw status或firewall-cmd --list-ports) - 确认宝塔中该站点的「网站设置 → SSL」里没有勾选「强制 HTTPS」,否则会 301 跳转导致挑战失败
DNS 解析与 API 授权失败的典型表现
如果你用的是通配符证书(*.example.com),HTTP-01 根本不被支持,必须走 DNS-01 验证。此时失败几乎都出在 API 授权环节。
关键现象和对应动作:
- 日志里出现
dns-01 challenge is required或Unauthorized: Account creation on ACMEv1 is disabled→ 先升级 acme.sh:~/.acme.sh/acme.sh --upgrade -
dig _acme-challenge.example.com txt +short查不到记录 → 检查 DNS API 密钥是否填错,阿里云需授予AliyunDNSFullAccess权限,Cloudflare 需开启Zone:Read和DNS:Edit - 宝塔里用了「自动续签」但始终不触发 DNS 验证 → 宝塔默认不启用 DNS 模式,必须手动编辑
/www/server/panel/vhost/cert/your-domain.com/acme.json,确保含"dns_api": "dns_aliyun"字段
强制更新前必须清理的三个隐藏干扰项
直接点面板上的「强制续签」大概率重复失败。这些干扰项不清理,acme.sh 每次都会复用旧状态或旧配置。
- 进站点「SSL」页,点右上角「清除 SSL 缓存」——这会删掉旧的
fullchain.pem和privkey.pem,避免证书链冲突 - 执行:
rm -rf /www/wwwroot/你的站点/.well-known,再执行bt 7(重载 Nginx),让宝塔下次重建干净的验证目录 - 检查「反向代理」「伪静态」「URL 重写」规则里有没有拦截
/.well-known/的行,比如deny all;或rewrite ^/(.*)$ https://$host/$1 permanent;
通配符证书续签失败,90% 是因为 DNS API 没授权成功或 acme.sh 版本太老;普通单域名失败,80 端口和 DNS 解析才是第一排查点。别急着重装面板,先盯住这几个路径和命令输出。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











