六维教程

Cloudflare SSL/TLS 加密模式

用户浏览器到 Cloudflare、Cloudflare 到源站,这两段路如果有一段是明文,整个传输就不能算安全。Cloudflare 的 SSL/TLS 加密模式控制的就是这两段路的加密策略。这一篇讲清楚四种模式的区别,重点说明 Flexible 模式的安全风险,避免新手踩坑。

SSL 与 TLS 是什么

SSL(Secure Sockets Layer,安全套接层)是早期的加密协议,TLS(Transport Layer Security,传输层安全)是它的继任者。现在业内还在用 SSL 这个老名字,实际跑的都是 TLS。Cloudflare 控制台用 SSL/TLS 这个写法,意思是同一回事。

HTTPS 就是 HTTP 加上 TLS。用户在浏览器看到的小锁图标,代表这段连接用了 TLS 加密。Cloudflare 在 HTTPS 链路里扮演中转角色,因此分成两段。

链路段 起点 终点
边缘到用户 Cloudflare 节点 用户浏览器
边缘到源站 Cloudflare 节点 你的源站服务器

两段路分别决定是否加密、用什么证书、是否校验。四种加密模式就是这两段路加密策略的组合。

四种加密模式

进入域名的 SSL/TLS 分区,在 Edge Certificates 下能看到加密模式选项。从弱到强共四种。

模式 边缘到用户 边缘到源站 安全性
Off 不加密 不加密 最弱
Flexible 加密 不加密 弱,有风险
Full 加密 加密 中等
Full (strict) 加密 加密并校验 强

下面逐个说明。

Off 模式

完全关闭 HTTPS。用户访问 https://example.com 会失败,只能用 http://。Cloudflare 不与用户建立 TLS 连接,也不与源站建立。

这种模式只适合完全不考虑安全的内网测试或纯内部用途。任何对公网开放的服务都不应该用 Off。

Flexible 模式

用户到 Cloudflare 这段加密,Cloudflare 到源站这段不加密。用户在浏览器看到的是 HTTPS 小锁,但 Cloudflare 把请求转给源站时用的是明文 HTTP。

这种模式看起来安全,实际有严重缺陷,是新手最容易踩的坑。

Flexible 的安全风险

Flexible 模式的风险点在 Cloudflare 到源站这一段。这段流量走公网,明文传输意味着任何人都能在中间截获,看到完整请求内容,包括表单数据、Cookie、API 凭证。

风险 说明
中间人窃听 源站 IP 段的流量可被监听
数据篡改 响应内容可被中间节点改写
Cookie 暴露 用户会话凭证在明文段外泄
误导性安全感知 浏览器显示小锁,让人误以为全程加密

最危险的是最后一条。用户和开发者都以为 HTTPS 就是安全的,实际上后半段裸奔。如果源站所在机房或途经网络被入侵,用户数据就泄露了,而且很难被发现。

Flexible 模式只在一种情况下有合理性,源站完全不支持 HTTPS,例如某些老旧设备或自建的内网服务,又必须用 Cloudflare 的 CDN。即便如此,也强烈建议先给源站配上 HTTPS,再切到 Full 模式。

Full 模式

用户到 Cloudflare 加密,Cloudflare 到源站也加密。源站需要配置一张证书,可以是正规 CA 签发的,也可以是自签的。Cloudflare 不会校验源站证书的合法性,只要它能完成 TLS 握手即可。

这比 Flexible 安全很多,因为全程都加密了。但有一个隐患,Cloudflare 不校验源站证书,意味着源站证书过期、自签、甚至被替换为伪造证书,Cloudflare 都不会报错。如果攻击者能控制源站或中间网络,理论上可以替换证书实施中间人攻击。

对比项 Flexible Full
用户到边缘 加密 加密
边缘到源站 不加密 加密
源站证书要求 无 需要证书,可不正规
证书校验 不适用 不校验
安全性 弱,明文段存在 中等,全程加密

Full (strict) 模式

在 Full 基础上增加证书校验。Cloudflare 会校验源站证书是否由受信任 CA 签发、是否在有效期内、域名是否匹配。任何一项不通过,请求直接失败。

这是四种模式里最安全的,也是生产环境应该选的模式。源站证书可以是下面任意一种。

证书来源 是否被 strict 接受
公共 CA 签发,例如 Let’s Encrypt 是
Cloudflare Origin CA 签发 是
自签证书 否
过期证书 否

Cloudflare Origin CA 是 Cloudflare 免费提供的源站证书签发服务,有效期最长 15 年,只能用于 Cloudflare 到源站这段,下一篇会专门讲。

模式选择建议

实际项目里怎么选,下面这张表给一个直接结论。

场景 推荐模式
生产环境,源站有正规证书 Full (strict)
生产环境,源站只有自签证书 Full,尽快换正规证书
临时测试,源站无 HTTPS Flexible,尽快改造
纯内网测试 Off 或 Flexible

绝大多数情况下目标应该是 Full (strict)。从 Flexible 升级到 Full 的步骤是先给源站申请证书,例如用 Let’s Encrypt 免费签发,然后在 Cloudflare 把模式切到 Full (strict),观察是否有报错,有报错说明证书配置有问题,修好再切。

小结

四种加密模式里 Off 和 Flexible 不该用于生产环境,Full 是过渡方案,Full (strict) 是生产标配。Flexible 的最大危害是伪装安全,浏览器显示小锁但后半段明文。下一篇讲怎么准备源站证书、配置边缘证书和安全响应头,把 HTTPS 真正做扎实。

上一篇 Cloudflare CDN 与缓存策略
下一篇 Cloudflare SSL/TLS 证书与安全头

上一篇
Cloudflare CDN 与缓存策略
下一篇
Cloudflare SSL/TLS 证书与安全头