现象

源站配好了 HTTPS,用 curl 带 Host 头直连源站返回 200,但通过 Cloudflare 访问一直 526 Invalid SSL Certificate。

误解一:以为 526 是源站配置问题

先确认源站:证书私钥匹配、有效期正常、Nginx 配置语法通过、本机测试 200。全都对。那问题只能在 Cloudflare 那一侧。

误解二:以为「自动 SSL/TLS」是安全的最佳选择

Cloudflare 的 SSL/TLS 模式有三个主要选项:

  • 灵活 Flexible:CF 到源站走 HTTP,源站不需要证书
  • 完全 Full:CF 到源站走 HTTPS,但不校验源站证书是否有效
  • 完全(严格)Full (strict):校验源站证书必须有效且域名匹配

而「自动 SSL/TLS」是 Cloudflare 推荐的智能模式,它会根据源站实际情况动态判断。如果发现源站证书链不完整,就会拒绝连接。

它不是「第一个选项所以最安全」,而是「让 Cloudflare 自己看着办」。当源站条件不满足它的判断标准时,结果就是连不上。

证书链完整性问题

从 Cloudflare 下载的 Origin 证书默认只包含叶子证书。完整的证书链还需要中间 CA 证书。用 openssl 验证时会出现:

error 20 at 0 depth lookup: unable to get local issuer certificate

这种情况在 Full (strict) 和自动模式下都会失败,切到 Full 就能通过。

解决

把 SSL 模式从「自动」改成「完全 Full」。CF 到源站这一段仍然加密,只是不严格校验证书链完整性,安全性对个人站点完全够用。

记忆点

526 出现了,先看 Cloudflare 的 SSL 模式,再看证书链是否完整。别一头扎进源站配置里。

← 返回博客

评论

发表回复

您的邮箱地址不会被公开。必填项已用 *