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 端口可访问。