Soup's Blog

Back

一次代理加速优化的完整记录

一次代理加速优化的完整记录,深入理解 OCSP Stapling 如何消除 TLS 握手中的证书校验延迟
}

⚡ 从 21s 到 1.7s:一次代理加速的完整复盘#


一、发现问题:为什么这么慢?#

🎯 本章导读

一个 curl 命令暴露的真相

代理访问境外网站极其缓慢?先别急着换线路——可能是 TLS 握手中的证书校验卡住了。

🔍 第一次测试:21 秒#

用 curl 测试访问谷歌,结果令人震惊:

测试结果:访问谷歌耗时 21 秒

21 秒——这个延迟显然不正常。问题出在哪?

🔑 第一个线索:-k 参数#

加上 --insecure(跳过证书验证)再试:

curl -k https://www.google.com
bash

测试结果:加 -k 后仅 1.7 秒

耗时从 21s 降到 1.7s。 问题定位:证书验证环节是瓶颈。


二、方案选择:两个方向#

🎯 本章导读

治标还是治本?

关闭本地证书校验 vs 让服务端代劳查询——你选哪个?

操作: 在每台电脑上关闭 Windows 的证书吊销检查。

问题: 每台设备都要单独配置,而且降低安全性——你无法知道证书是否已被吊销。

选方案二。


三、实施步骤#

🔧 操作流程

Cloudflare 域名 + acme.sh 证书 + Xray-core VLESS+TLS

需要一个真实域名(不能再用 reality 模式的无域名方案),整个流程分三步。

第一步:Cloudflare 域名与 API 配置#

由于之前用的是八合一脚本的 reality 模式(无域名),现在切换需要真实域名。备用域名 917758258.xyz 派上用场。

  1. 域名托管到 Cloudflare

    将域名的 DNS 指向你的服务器 IP

  2. 获取 API Token

    Cloudflare 控制台 → 右上角头像 → “我的个人资料” → “API 令牌” → “创建令牌” → 使用”编辑区域 DNS”模板 → 选择你的 .xyz 域名

    创建 API Token

  3. 获取 Zone ID

    域名”概述”页面 → 右侧”API”区域 → “区域 ID (Zone ID)”

    获取 Zone ID

第二步:acme.sh 申请 SSL 证书#

# 安装 acme.sh
curl https://get.acme.sh | sh -s email=你的邮箱地址
source ~/.bashrc
acme.sh --version  # 验证安装

# 设置 Cloudflare API 环境变量(当前会话有效)
export CF_Token="你的API令牌"
export CF_Zone_ID="你的Zone ID"

# 通过 DNS 验证申请证书
~/.acme.sh/acme.sh --issue --dns dns_cf -d 你的域名.xyz
bash

证书文件路径:

  • 证书:~/.acme.sh/917758258.xyz_ecc/fullchain.cer
  • 私钥:~/.acme.sh/917758258.xyz_ecc/917758258.xyz.key

第三步:八合一脚本配置 VLESS+TLS#

步骤选项选择
1功能菜单2(任意组合安装)
2选择核心1(Xray-core)
3协议组合0(VLESS+TLS_Vision+TCP [推荐])
4输入域名917758258.xyz
5输入端口8864
6是否使用 CDNn(否)
7是否使用自定义证书y(是)
8证书文件路径/root/.acme.sh/917758258.xyz_ecc/fullchain.cer
9私钥文件路径/root/.acme.sh/917758258.xyz_ecc/917758258.xyz.key
10UUID直接回车(自动生成)

✅ 测试结果#

配置完成后测试:

测试结果:速度完美

完美。 访问速度明显变快。


四、原理深入:OCSP 与 OCSP Stapling#

🧠 核心原理 'subheading=' 一次'等待别人回复'的消除

OCSP Stapling 为什么能加速?它把一次额外的网络往返合并进了 TLS 握手这个必须做的步骤里。

❌ 没有 OCSP Stapling 时#

当客户端通过 HTTPS 连接服务器,需要确认 SSL 证书是否仍然有效(未被吊销):

  1. 你的电脑 → 服务器

    发起 TLS 握手(“你好,我要建立安全连接”)

  2. 服务器 → 你的电脑

    发送自己的 SSL 证书

  3. 你的电脑 → CA 的 OCSP 服务器

    查询证书状态(“这个证书还有效吗?”)🔴 额外网络请求

  4. CA 的 OCSP 服务器 → 你的电脑

    回复”有效”或”已吊销” 🔴 等待响应,可能超时

✅ 有 OCSP Stapling 时#

  1. 你的服务器(日本 VPS)

    定时(如每小时)主动向 CA 查询自己证书的状态,缓存结果

  2. 你的电脑 → 服务器

    发起 TLS 握手

  3. 服务器 → 你的电脑

    TLS 证书 + 已缓存的 OCSP 响应(“证书有效”)一起打包发送

📊 对比#

维度无 OCSP Stapling有 OCSP Stapling
证书校验客户端查 CA服务器代查 + 缓存
网络往返TLS 握手 + OCSP 查询(额外)仅 TLS 握手
延迟可能几十秒(超时)毫秒级
安全性相同相同(不牺牲)
国内适用❌ CA 服务器可能不通✅ 服务器访问 CA 更稳定

五、总结#

📚 知识回顾

这次优化的关键收获

📝 三个关键认知#

认知说明
先定位再优化curl -k 快速排除法——加参数后速度飞升 → 定位到证书校验层
治本不治标关证书校验 vs 服务端 OCSP Stapling——后者不牺牲安全性
OCSP Stapling 本质把”额外查询”变成”握手附赠”——消除一次网络往返

🔗 技术栈总结#

问题:TLS 握手中 OCSP 查询超时(21s)

方案:OCSP Stapling(服务器缓存证书状态)

工具链:
  Cloudflare(DNS + API)
  acme.sh(自动申请/续签证书)
  Xray-core + VLESS + TLS_Vision + TCP(代理协议)

结果:1.7s,零安全性损失
plaintext