HTTP-01 验证原理

HTTP-01 验证通过在你的 Web 服务器上放置一个指定的验证文件,CA 机构通过 HTTP 访问该文件以确认你对域名(或 IP)的控制权。

验证文件路径格式:http://example.com/.well-known/acme-challenge/<token>

适用场景

场景是否适用
域名已解析到服务器且服务正在运行✅ 推荐
IP 地址证书(无域名)✅ 唯一选择
通配符证书(*.example.com❌ 不支持,必须用 DNS 验证
域名尚未解析或服务器未启动❌ 不适用
服务器在 CDN/负载均衡后面⚠️ 需确保验证请求能到达源站

验证步骤

1. 获取验证信息

提交申请后,系统会在流程页显示验证信息:

  • 验证文件路径/.well-known/acme-challenge/<token>
  • 验证文件内容:系统生成的随机字符串

2. 部署验证文件

方式一:直接放置文件

将验证文件放到 Web 服务器根目录下的对应路径:

# Nginx 默认根目录示例
sudo mkdir -p /var/www/html/.well-known/acme-challenge/
echo "验证文件内容" | sudo tee /var/www/html/.well-known/acme-challenge/<token>

方式二:使用 Nginx 配置片段(推荐)

平台会生成一段 Nginx 配置,直接复制到你的 server 块中即可,无需手动创建文件:

location /.well-known/acme-challenge/ {
    root /var/www/html;
}

3. 验证生效

确保通过 HTTP(非 HTTPS)可以访问验证文件:

curl http://example.com/.well-known/acme-challenge/<token>

返回验证文件内容即表示部署成功,回到平台点击「验证」按钮。

常见问题

验证失败:404 Not Found

  • 检查文件路径是否正确(注意 .well-known 是隐藏目录)
  • 确认 Web 服务器根目录配置正确
  • 检查是否有 URL 重写规则拦截了该路径

验证失败:连接被拒绝

  • 确认服务器 80 端口已开放
  • 确认域名已正确解析到服务器 IP
  • 检查防火墙/安全组是否放行 80 端口

CDN/负载均衡后面的服务器

如果域名指向 CDN 或负载均衡器,需确保 /.well-known/acme-challenge/ 路径的请求能到达源站,或在 CDN 层直接配置验证文件响应。

IP 地址证书验证

IP 地址证书只能使用 HTTP-01 验证。验证时直接通过 IP 访问(示例 IP 为 RFC 5737 文档保留网段,实际请替换为你服务器的公网 IP):

curl http://203.0.113.10/.well-known/acme-challenge/<token>

确保 IP 对应的服务器 80 端口可访问。