大多数情况下,Cloudflare Pages 绑定自定义域名后出现 SSL 报错,是因为 DNS 记录尚未生效或证书正在签发中,建议先检查 Pages 后台域名状态并等待传播。
先说结论:这类问题通常不需要手动配置证书,重点在于确认域名所有权验证和 DNS 解析状态。
- 先确认:Pages 控制台 Custom Domains 页面是否显示 Active 或 Pending 状态
- 先处理:核对域名 DNS 记录是否指向 Cloudflare 要求的 CNAME 或 A 记录
- 再验证:清除本地 DNS 缓存或使用无痕模式访问测试
快速处理思路
由于 Pages 托管型服务不涉及服务器命令行操作,主要通过控制台和 DNS 排查:
- 登录 Cloudflare Dashboard,进入 Pages 项目。
- 点击 Custom Domains,查看绑定域名的状态指示灯。
- 若显示 Pending,通常等待一段时间即可;若显示 Error,点击查看详情。
为什么会这样
Cloudflare Pages 为自定义域名自动提供 Universal SSL 证书,不需要用户上传证书文件。报错通常由以下原因导致:
- DNS 传播延迟:修改记录后,全球 DNS 生效需要时间,期间可能访问到旧记录或无法解析。
- 证书签发中:Cloudflare 需要验证域名所有权后才能签发证书,验证未完成前 HTTPS 会报错。
- 域名冲突:该域名可能已经绑定在另一个 Cloudflare 账户或项目中,导致验证失败。
DNS 记录配置示例
以下是 Cloudflare Pages 绑定自定义域名所需的标准 DNS 记录配置,请根据你的域名服务商后台进行添加:
| Type | Name | Content | TTL | Proxy Status |
|---|---|---|---|---|
| CNAME | www (或 @) | your-project.pages.dev | Auto | Proxied (若托管在 CF) |
注意:若域名 DNS 托管在 Cloudflare,记录默认会自动代理(橙色云朵);若使用外部 DNS 服务商,只需确保 CNAME 解析生效,无需关心代理状态。
分步处理
第一步:检查 Pages 后台状态
在 Pages 项目的 Custom Domains 列表里,观察域名右侧的状态。如果是 Pending Ownership Verification,需要按要求添加 TXT 记录或确认 CNAME 指向。如果是 Pending SSL,说明 DNS 已通,正在申请证书。
第二步:核对 DNS 记录
在你的域名 DNS 服务商处,确保自定义域名(如 www.example.com)的 CNAME 记录指向了 Pages 提供的子域名(如 your-project.pages.dev)。参考上方配置表示例,确保记录值无误。
第三步:检查 SSL/TLS 加密模式(仅当域名同时作为 Cloudflare Zone 管理时)
如果该域名本身就是一个 Cloudflare Site,进入 SSL/TLS 设置,确保加密模式至少为 Full。Pages 托管的内容通常要求 Full 或 Full (Strict),避免设置为 Off 或 Flexible 导致重定向循环或证书错误。
怎么验证是否生效
使用命令行工具 curl 和 dig 检查响应头及 DNS 解析,配合本地浏览器测试:
curl -vI https://your-custom-domain.com
dig your-custom-domain.com
观察 curl 输出中是否有 SSL certificate verify ok 以及 HTTP 状态码是否为 200。dig 命令应返回正确的 CNAME 指向。同时在浏览器无痕窗口访问,确认没有以下报错:
ERR_SSL_VERSION_OR_CIPHER_MISMATCHSSL_ERROR_RX_RECORD_TOO_LONGNET::ERR_CERT_AUTHORITY_INVALID
常见坑
- 域名已被占用:如果提示域名已存在,需先从原账户解绑,不能强行绑定。
- 混合内容报错:页面加载了 HTTP 资源,虽然 SSL 握手成功,但浏览器可能显示不安全。
- 本地缓存干扰:浏览器或本地 DNS 缓存了旧的错误证书,尝试更换网络或清除缓存。
- 根域名绑定:根域名(@)通常需要使用 A 记录指向特定 IP 或配合 CNAME Flattening,直接 CNAME 可能不生效。
参考来源
- Cloudflare Docs, "Custom domains", https://developers.cloudflare.com/pages/configuration/custom-domains/
- Cloudflare Docs, "SSL/TLS", https://developers.cloudflare.com/ssl/