先把当时的情况摆出来。证书自动续签连续失败,日志里报 invalid response from /.well-known/acme-challenge/,WAF 把这条路径当成扫描探测拦了。
这类报错背后常见的原因有几处,逐个排除就行。WAF 把 .well-known 目录当成敏感路径。另一种情况是CDN 拦了没有扩展名的校验文件。
还有一种情况,校验文件被伪静态规则重写到首页。另外,HTTP 到 HTTPS 强制跳转,校验请求拿不到明文响应。
直接请求校验路径看返回
curl -sI http://www.example.com/.well-known/acme-challenge/test
接着在 WAF 和 Nginx 里放行该目录
location ^~ /.well-known/acme-challenge/ { allow all; }
再往下让校验路径跳过强制跳转
location ^~ /.well-known/ { try_files $uri =404; }
手动续签一次验证
acme.sh --renew -d www.example.com --force
报错是间歇性的,我蹲守了半小时才抓到一次完整现场。
白天有业务在跑,能验证的部分都压到了晚上做。
别只看报错消失,验证要多做一步。续签日志显示成功,浏览器里的证书有效期更新到新日期。
提醒一点。续签失败往往是 WAF 或跳转规则导致,别一上来就重装证书。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。
