新服务器上Let's Encrypt证书续期出现403/404错误
看起来你迁移服务器后碰到了Let's Encrypt验证的经典坑,我之前换服务器时也遇到过几乎一模一样的问题,给你几个实用的排查方向:
先检查acme-challenge目录的权限和归属
新服务器的Ubuntu 24.04虽然也是用Apache,但有时候目录权限或者用户组会因为系统配置变化出问题。先确认网站根目录下有没有.well-known/acme-challenge文件夹,如果没有就手动创建:mkdir -p /var/www/你的网站根目录/.well-known/acme-challenge然后给它设置正确的权限和归属(确保Apache能读写):
chmod 755 /var/www/你的网站根目录/.well-known/acme-challenge chown www-data:www-data /var/www/你的网站根目录/.well-known/acme-challenge检查Apache配置是否允许访问该目录
新服务器的Apache可能有更严格的默认配置,导致Let's Encrypt无法访问验证文件。打开你的网站虚拟主机配置文件,添加一段允许访问.well-known目录的规则:<Directory "/var/www/你的网站根目录/.well-known/"> AllowOverride None Require all granted </Directory>配置完记得重启Apache生效:
systemctl restart apache2排查重写规则或安全模块的拦截
如果你的网站用了mod_rewrite做URL重写,有可能把acme-challenge的请求给重定向了。可以在网站根目录的.htaccess文件里添加一条规则,排除这个路径的重写:RewriteRule ^\.well-known/acme-challenge/ - [L]另外,新服务器如果启用了mod_security这类安全模块,也可能误拦截验证请求,可以临时关闭mod_security测试一下,或者检查它的日志有没有相关拦截记录。
确认DNS解析是否完全生效
虽然网站能正常访问,但Let's Encrypt的验证服务器可能还缓存着旧的DNS记录,导致它去旧服务器找验证文件。可以用dig www.example.com命令检查域名指向的IP是不是新服务器的IP,如果还有问题,可以等DNS缓存过期,或者手动刷新本地DNS测试。
备注:内容来源于stack exchange,提问作者user513667

