type
status
date
slug
summary
tags
category
icon
password

Cloudflare 的代理模式解释

Cloudflare 提供三种 HTTPS 模式:
  • Flexible(灵活模式):
    • 客户端与 Cloudflare 之间通过 HTTPS 连接(Cloudflare 使用自己的 SSL 证书)。
    • Cloudflare 与源服务器(你的托管服务,如 Vercel)之间通过 HTTP 连接(不需要源服务器有 SSL 证书)。
    • 不推荐,因为 Cloudflare 和源服务器之间的传输不加密。
  • Full(完全模式):
    • 客户端与 Cloudflare 之间通过 HTTPS 连接(Cloudflare 使用自己的 SSL 证书)。
    • Cloudflare 与源服务器之间也通过 HTTPS 连接(源服务器需要有 SSL 证书,但证书可以是自签名的)。
    • 优点:确保整个链路的加密,但不验证源服务器的 SSL 证书是否可信。
  • Full (Strict)(完全严格模式):
    • 客户端与 Cloudflare 之间通过 HTTPS 连接(Cloudflare 使用自己的 SSL 证书)。
    • Cloudflare 与源服务器之间也通过 HTTPS 连接,但源服务器必须有一个受信任的 SSL 证书(例如,Let’s Encrypt 颁发的 SSL 证书)。
    • 最安全的模式,确保客户端到 Cloudflare、Cloudflare 到源服务器整个链路都使用有效的加密和验证。
比如你的网站或应用托管在vercel等第三方平台,那么cloudflare和vercel服务器之间的https是如何连接的呢?

1. 域名解析

当用户访问你的自定义域名时,DNS 查询首先会到达 Cloudflare。Cloudflare 会根据其 DNS 记录找到相应的 IP 地址,并将请求发送到该地址。

2. 客户端与 Cloudflare 建立连接

用户的浏览器首先与 Cloudflare 建立 HTTPS 连接。在此过程中,Cloudflare 会提供其自己的 SSL 证书,用户浏览器会验证该证书以确保安全。

3. Cloudflare 与源服务器建立 HTTPS 连接

在 Cloudflare 与 Vercel 服务器之间建立 HTTPS 连接时,Cloudflare 会执行以下步骤:
  1. 发起 TLS 握手
      • Cloudflare 发送一个 TLS 握手请求到 Vercel 服务器,询问是否可以建立安全连接。
  1. 服务器响应
      • Vercel 服务器收到请求后,会返回其 SSL 证书和相关的加密参数(如加密算法、密钥交换方法等)。
  1. 证书验证
      • Cloudflare 会验证 Vercel 返回的 SSL 证书,确保该证书有效且未过期。如果 Vercel 的 SSL 证书是自签名的,Cloudflare 在“完全”模式下会接受该证书,但在“完全严格”模式下,Cloudflare 只会接受受信任的证书。
  1. 完成握手
      • 一旦验证通过,Cloudflare 和 Vercel 之间会完成 TLS 握手,生成会话密钥以加密接下来的通信。

4. 数据传输

建立连接后,Cloudflare 将客户端的请求加密并转发到 Vercel 服务器。数据在 Cloudflare 和 Vercel 之间通过已建立的安全通道传输,确保数据在传输过程中不会被截获或篡改。

5. Vercel 处理请求

Vercel 服务器接收到请求后,处理请求并返回响应。响应会经过相同的过程:
  • 通过加密通道返回给 Cloudflare。
  • Cloudflare 再将响应返回给客户端。
OSI参考模型各层网络协议Wireshark过滤规则
  • Twikoo