如何在透明代理模式下正确部署 ECH
作者: cuonglm创建于 2022年6月3日更新于 2022年6月10日
我有一个 TLS 透明代理,其工作原理如下: 客户端 ==|TLS 请求|==> 代理 ==|HTTP 连接|==> 目标站点 我使用 https://GitHub.com/inconshreveable/go-vhost 来嗅探 SNI,并构建 HTTP 连接请求发送到目标站点。 现在,我想在我的透明代理中添加 ECH 支持。但是,在获取内部 SNI 后,我遇到了问题: tlsConn, _ := vhost.TLS(conn) sconn := tls.Server(tlsConn, &tls.Config{ ECHEnabled: true, ServerECHProvider: echProvider, Certificates: []tls.Certificate{cert} }) sconn.Handshake() sconn.ConnectionState().Servername // 这是内部 SNI IIUC,代理必须告诉客户端构建新的内部 ClientHello,我如何使用当前的 crypto/tls API 来实现这一点? cc @cjpatton
内容来源: cloudflare/go