概览
参考文档:Cloudflare SSL/TLS
前提:域名的
DNS托管在Cloudflare,并且解析记录开启了代理(橙色云朵),证书与防护都只在代理流量上生效Cloudflare的HTTPS是两段加密,两段独立配置、独立证书:flowchart LR V["访客浏览器"] -->|"HTTPS(边缘证书)"| C["Cloudflare 边缘节点"] C -->|"回源(SSL/TLS 模式)"| O["源站服务器"]- 前一段:访客到
Cloudflare,由边缘证书加密,Cloudflare自动签发与续期 - 后一段:
Cloudflare回到源站,由SSL/TLS加密模式决定走不走加密、验不验证证书
- 前一段:访客到
边缘证书
Universal SSL对 apex 域名与一级子域名(*.example.com)免费签发,激活代理后自动生效,无需手工续期- 深一级的子域名(
a.b.example.com)不在Universal SSL覆盖范围内,需要购买高级证书或改用ACME自签 - 配套开关在
SSL/TLS->Edge Certificates:Always Use HTTPS:把HTTP请求301重定向到HTTPS,建议开启HSTS:强制浏览器后续只走HTTPS,开启前确认全站资源都是HTTPS,否则浏览器会直接拒载Minimum TLS Version:建议TLS 1.2起
SSL/TLS 加密模式
- 模式决定回源那段怎么走,在
SSL/TLS->Overview里切换:Flexible:回源走明文HTTP,源站IP与内容在公网裸奔,只适合临时过渡Full:回源走HTTPS,但不验证源站证书,自签证书也能过,能被中间人冒充源站Full (strict):回源走HTTPS并验证证书,常规选择
- 一句话:永远用
Full (strict),剩下的差别只是源站证书从哪来
回源证书
- 源站证书三种来源,按场景选择:
Cloudflare Origin CA:在SSL/TLS->Origin Server生成,有效期最长15年,只被Cloudflare信任,浏览器直接访问会报错,适合源站只接受Cloudflare回源的服务Let's Encrypt:公开可信,配合certbot自动续期,源站还需要被浏览器直连(灰云)时用它- 商业证书:有现成的就用,效果同
Let's Encrypt
- 用
Origin CA证书时把生成的pem与私钥装到源站Web服务器,nginx的挂法见在 VPS 上部署 nginx - 证书装好后,把模式切到
Full (strict),用浏览器访问验证证书链正常
DNS 与代理
- 解析记录照常指向
VPS的IP,橙色云朵开启即享受证书与防护 - 灰色云朵是纯
DNS,流量不经过Cloudflare,边缘证书与加密模式都不参与,源站要自己扛TLS(如裸IP场景,参考自建 ntfy 节点把通知推到手机) - 源站
IP暴露在解析记录里,配合防火墙只放行Cloudflare回源网段,可以挡掉直连源站的扫描