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 会执行以下步骤:
- 发起 TLS 握手:
- Cloudflare 发送一个 TLS 握手请求到 Vercel 服务器,询问是否可以建立安全连接。
- 服务器响应:
- Vercel 服务器收到请求后,会返回其 SSL 证书和相关的加密参数(如加密算法、密钥交换方法等)。
- 证书验证:
- Cloudflare 会验证 Vercel 返回的 SSL 证书,确保该证书有效且未过期。如果 Vercel 的 SSL 证书是自签名的,Cloudflare 在“完全”模式下会接受该证书,但在“完全严格”模式下,Cloudflare 只会接受受信任的证书。
- 完成握手:
- 一旦验证通过,Cloudflare 和 Vercel 之间会完成 TLS 握手,生成会话密钥以加密接下来的通信。
4. 数据传输
建立连接后,Cloudflare 将客户端的请求加密并转发到 Vercel 服务器。数据在 Cloudflare 和 Vercel 之间通过已建立的安全通道传输,确保数据在传输过程中不会被截获或篡改。
5. Vercel 处理请求
Vercel 服务器接收到请求后,处理请求并返回响应。响应会经过相同的过程:
- 通过加密通道返回给 Cloudflare。
- Cloudflare 再将响应返回给客户端。
- Author:Gweek
- URL:https://www.myla.eu.org/article/cloudflare-aq
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!