【发布时间】:2021-09-28 12:05:21
【问题描述】:
我现在正在使用 Netty 实现代理服务器。 我的代理可以将 http 数据从客户端发送到服务器,反之亦然。 但是当我尝试访问 https 站点时,使用 curl 从客户端到服务器的数据显示 1401E10B:SSLroutines:CONNECT_CR_FINISHED:wrong version number 错误。 Error message figure
到目前为止,我所做的事情如下。
- 为 http 建立管道
客户端到代理管道
HttpServerCodec -> HttpObjectAggregator -> ClientToProxyHandler
在 ClientToProxyHandler 中,我的代理服务器使 TCP 连接到远程服务器
删除服务器管道的代理
HttpClientCodec -> HttpObjectAggregator -> ProxyToServerHandler
在 ProxyToServerHandler 中,只需将远程服务器的响应发送到 inboundChannel。
使用这些管道,http 请求运行良好。
- 为了从客户端向远程服务器发送加密消息,当代理接收到https初始请求时,代理与远程服务器建立tcp连接并向客户端发送200连接建立。另外,当时我从管道中删除了 HttpCodecs 和 HttpObjectAggregator,因为我认为加密数据不需要 HttpCodecs 和 HttpObjectAggregator。
使用这些结构,结果显示 TLS 握手失败,如上图。
另外,我认为这不是 curl 的版本问题,因为当我运行 LittleProxy 并输入相同的 curl 命令时,它可以工作。
【问题讨论】: