You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Certbot获取SSL遇.well-known/acme-challenge 404错误(Apache环境求助)

修复Apache下Certbot SSL验证404错误的步骤

1. 确认Webroot路径的准确性

你用的-w projectroot参数必须完全匹配Apache站点配置里的DocumentRoot路径,不能随便填项目根目录(比如包含配置文件、.git的目录)。
查看Apache站点配置确认路径:

# Ubuntu/Debian系统
cat /etc/apache2/sites-available/xxxxxx.com.conf
# CentOS/RHEL系统
cat /etc/httpd/conf.d/xxxxxx.com.conf

找到DocumentRoot字段,把certbot命令里的-w参数值替换成这个路径。

2. 手动验证ACME挑战路径的可访问性

先手动创建测试文件,排查Apache能不能正确返回该路径的内容:

# 进入正确的DocumentRoot路径
cd /path/to/your/DocumentRoot
# 创建ACME挑战所需的目录结构
mkdir -p .well-known/acme-challenge
# 创建测试文件
echo "test-verify" > .well-known/acme-challenge/test-file
# 设置权限,确保Apache运行用户可读取
chown -R www-data:www-data .well-known  # Ubuntu/Debian
# CentOS/RHEL请用apache用户
chown -R apache:apache .well-known

完成后用curl或浏览器访问http://xxxxxx.com/.well-known/acme-challenge/test-file,能看到test-verify就说明路径正常;如果还是返回404,检查以下配置:

  • 确认站点配置的ServerName/ServerAlias包含你的目标域名xxxxxx.com
  • 要是站点有HTTP转HTTPS的重定向规则,得添加ACME路径的例外:
    在Apache站点配置里加:
RewriteEngine On
# 跳过ACME挑战路径的HTTPS重定向
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

修改后重启Apache:

# Ubuntu/Debian
systemctl restart apache2
# CentOS/RHEL
systemctl restart httpd

3. 验证DNS记录与服务器IP匹配

检查域名的A/AAAA记录是不是指向服务器公网IP:

# 检查IPv4记录
dig xxxxxx.com A +short
# 检查IPv6记录
dig xxxxxx.com AAAA +short

要是返回的IP和服务器公网IP不符,修改DNS记录后等5-10分钟让缓存生效。

4. 检查防火墙/安全组设置

确保服务器的80端口(HTTP)对外开放,ACME验证必须通过80端口完成,要是防火墙或云服务商安全组禁用了80端口,直接会导致验证失败。


.well-known文件夹的生成位置

用certbot run -a webroot模式时,.well-known文件夹会自动生成在你-w参数指定的Webroot路径下(也就是正确的DocumentRoot目录)。如果自动创建失败,可按照步骤2手动创建目录并设置权限。

内容的提问来源于stack exchange,提问作者Supun Madhushanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:03:13