Cloudflare Worker反向代理525错误
表现
Cloudflare Worker内通过fetch()访问某些网站时出现525 SSL证书握手错误,且仅在自定义域名(Zone)下存在该问题,通过默认workers.dev访问时,worker不会出错
修复
关闭该Zone下SSL/TLS下的“后量子混合”
扩展
“后量子混合”将只发送后量子算法X25519MLKEM768,不支持的后端将握手失败,使用以下命令测试
- 编译
bssl
1 2 3 4 5 6 7 8 9 10
| sudo apt install -y cmake ninja-build build-essential git clone https://github.com/google/boringssl.git cd boringssl
cmake -GNinja -B build -DCMAKE_BUILD_TYPE=Release ninja -C build bssl
|
- 执行测试
1
| ./bssl client -connect <YOUR_ORIGIN>:443 -curves X25519MLKEM768
|
参考输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| aaa@aaa:~/boringssl-0.20260813.0/build$ ./bssl client -connect chat.deepseek.com:443 -curves X25519MLKEM768 Connecting to 116.205.40.114:443 Error while connecting: SSLV3_ALERT_HANDSHAKE_FAILURE 96303410904544:error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE:/home/aaa/boringssl-0.20260813.0/ssl/tls_record.cc:491:SSL alert number 40 96303410904544:error:1000009a:SSL routines:OPENSSL_internal:HANDSHAKE_FAILURE_ON_CLIENT_HELLO:/home/aaa/boringssl-0.20260813.0/ssl/handshake.cc:591: aaa@aaa:~/boringssl-0.20260813.0/build$ ./bssl client -connect www.cloudflare.com:443 -curves X25519MLKEM768 Connecting to [2606:4700::6810:7b60]:443 Connected. Version: TLSv1.3 Resumed session: no Cipher: TLS_AES_128_GCM_SHA256 ECDHE group: X25519MLKEM768 Signature algorithm: ecdsa_secp256r1_sha256 Secure renegotiation: yes Extended master secret: yes Next protocol negotiated: ALPN protocol: OCSP staple: no SCT list: no Early data: no Encrypted ClientHello: no Cert subject: CN = www.cloudflare.com Cert issuer: C = US, O = Google Trust Services, CN = WE1
|
可见,对于chat.deepseek.com,国内CDN的配置不支持该加密算法
X25519MLKEM768,指椭圆曲线算法X25519和后量子密码算法ML-KEM-768的组合,同时称为混合密钥交换,保证即便其中一个算法出现问题,也足以保证安全- 后量子密码算法通过格密码实现
参考
- Post-quantum between Cloudflare and origin servers · Cloudflare SSL/TLS docs
- 后量子密码学 - 维基百科
- TLS 1.3 Hybrid Key Exchange using X25519Kyber768 / ML-KEM