您 zone 的 SSL/TLS Encryption Mode 控制 Cloudflare 如何管理两个连接:访问者与 Cloudflare 之间的连接,以及 Cloudflare 与源站服务器之间的连接。
flowchart LR
accTitle: SSL/TLS Encryption mode
A[Visitor] <--Connection 1--> B((Cloudflare))<--Connection 2--> C[(Origin server)]
如果可能,Cloudflare 强烈建议使用 Full(完全) 或 Full (strict)(完全(严格)) 模式,以防止恶意连接到达您的源站。
有关加密模式如何融入 Cloudflare SSL/TLS 保护整体架构的更多详情,请参阅概念。
Automatic SSL/TLS(自动 SSL/TLS) 依赖为 SSL/TLS Recommender 开发的探测机制,确定网站应设置的最安全、最稳妥的加密模式。如果存在更安全的选项(基于您的源站证书或能力),Automatic SSL/TLS(自动 SSL/TLS) 会找到并应用到您的域名。Custom SSL/TLS(自定义 SSL/TLS) 选项则与当前手动设置加密模式的方式完全相同。
要了解各种加密模式如何影响缓存,请参阅SSL 设置对缓存行为的影响部分。
Automatic SSL/TLS 利用 SSL/TLS Recommender 开发的高级方法,为您的网站选择最安全的加密模式。Recommender 使用 Cloudflare-SSLDetector 用户代理爬取您的站点,该代理被 Cloudflare 识别为受信任 bot,并绕过 robots.txt 规则(除非规则专门针对它),以确保准确性。它通过 HTTP 和 HTTPS 从源服务器下载内容,然后应用内容相似性算法评估一致性。通过了解您当前的 SSL/TLS 加密模式并评估源站的证书和能力,Recommender 可以自动调整设置,为您的域名维持最高安全性。
自动升级是逐步应用的。Automatic SSL/TLS 从仅 1% 的流量开始升级域名。如果未发现问题,新的 SSL/TLS 加密模式将以 10% 的增量应用于流量,直到 100% 的流量使用推荐模式。如果在此过程中源站连接失败,Cloudflare 会中止升级,立即将流量回滚到之前的模式,并记录失败。一旦 100% 的流量成功升级且没有 TLS 相关错误,域名的 SSL/TLS 设置将永久更新。
Flexible → Full/Strict 过渡会格外谨慎处理,因为源站方案变更(HTTP → HTTPS)会改变缓存键。在这种情况下,升级过程可能会更慢,以便在恢复标准增量之前进行缓存预热。
-
扫描频率:自动扫描目前大约每月进行一次,但在某些情况下可能更频繁(例如配置更改或升级)。在以下情况下扫描会停止:
- 站点已使用最安全的模式(例如 Full (strict)(完全(严格))),或
- 您从自动模式切换到 Custom SSL/TLS(自定义 SSL/TLS)。
-
升级前的错误检查:为防止中断,Cloudflare 在升级 zone 的加密模式前会检查
5XX错误(如502或503),并评估 HTTP 和 HTTPS 内容是否一致。 -
升级通知:Cloudflare 发送每周摘要邮件,列出已升级的 zone。这些邮件目前仅发送给 Super Admin。
如果您希望通过 API 让 zone 选择退出,可以在宽限期到期日或之前进行以下 API 调用。
Required API token permissions
At least one of the following token permissions is required:Zone Settings Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/ssl_automatic_mode" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"value": "custom"
}'如果您希望让多个 zone 选择退出:
-
创建具有以下权限的 API 令牌:
Zone - Zone - ReadZone - Zone Settings - ReadZone - Zone Settings - Edit
-
发起
GET请求获取 zone 列表(可按account.id过滤)。curl 'https://api.cloudflare.com/client/v4/zones?account.id=<ACCOUNT_ID>' \ --header 'Authorization: Bearer <CF_API_TOKEN>' \ --header 'Content-Type: application/json' -
创建要退出的 zone ID 列表,每个 zone ID 单独一行(换行分隔),保存在
zones.txt等文件中。 -
创建
opt-out-multiple-zones.shbash 脚本并添加以下内容。将zones.txt放在同一目录中,或相应更新路径。opt-out-multiple-zones.shbash for zoneID in $(cat zone.txt); do printf "Opting out ${zoneID}:\n" curl --request PATCH \ --url https://api.cloudflare.com/client/v4/zones/$zoneID/settings/ssl_automatic_mode \ --header 'Authorization: Bearer <CF_API_TOKEN>' \ --header 'Content-Type: application/json' \ --data '{"value":"custom"}' printf "\n\n" done -
打开命令行并运行:
bash opt-out-multiple-zones.sh
要使用 Custom SSL/TLS(自定义 SSL/TLS),请选择自定义选项(如果您希望手动设置加密模式,而不是使用 Automatic SSL/TLS):
- Off(无加密): 访客与 Cloudflare 之间或 Cloudflare 与源站之间的流量均不加密。全部为明文 HTTP。
- Flexible(灵活): 访客到 Cloudflare 的流量可通过 HTTPS 加密,但 Cloudflare 到源站服务器的流量不加密。此模式常见于不支持 TLS 的源站,但建议在可能时升级源站配置。
- Full: Cloudflare 连接源时匹配访客请求协议。如果访客使用 HTTP,Cloudflare 通过 HTTP 连接源;如果使用 HTTPS,Cloudflare 使用 HTTPS 且不验证源证书。此模式常见于使用自签名或其他无效证书的源。
- Full (strict): 与 Full 模式类似,但增加了对源服务器证书的验证,证书可由 Let's Encrypt 等公共 CA 或 Cloudflare Origin CA 签发。
- Strict(仅 SSL 源站拉取,SSL-Only Origin Pull): 无论访客到 Cloudflare 的连接使用 HTTP 还是 HTTPS,Cloudflare 始终通过 HTTPS 并验证证书连接到源站。
要在仪表板中更改加密模式:
-
在 Cloudflare 仪表板中,前往 SSL/TLS Overview(SSL/TLS 概览) 页面。
Go to Overview ↗ -
选择一种加密模式。
要使用 API 调整加密模式,请发送 PATCH 请求,URI 路径中的设置名称为 ssl,value 参数设置为您所需的值(off、flexible、full、strict 或 origin_pull)。