六维教程

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 证书与安全头