Apache 服务器与目标服务器之间的 Apache 代理 HTTP CONNECT 方法握手失败

Apache 服务器与目标服务器之间的 Apache 代理 HTTP CONNECT 方法握手失败

Apache/2.2.25 (Win32) mod_ssl/2.2.25 OpenSSL/0.9.8y

我正在尝试让 HTTP CONNECT 方法与 Apache 配合使用。我正在使用两个不同的目标服务器对其进行测试。它在一台服务器上运行良好,但在另一台服务器上失败。以下是 Apache 服务器与失败的目标服务器之间的连接的 Wireshark 跟踪。看起来 Apache 服务器在给目标服务器发送 Server Hello 机会之前发送了警报。为什么会发生这种情况?

Apache -> 目标 TCP 57070 > https [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1

目标 -> Apache TCP https > 57070 [SYN,ACK] Seq=0 Ack=1 Win=4380 Len=0 MSS=1460 WS=1 SACK_PERM=1

Apache -> 目标 TCP 57070 > https [ACK] Seq=1 Ack=1 Win=131328 Len=0

Apache -> 目标 SSLv3 客户端 Hello

Apache -> 目标 SSLv3 警报(级别:致命,描述:握手失败)

Apache -> 目标 TCP 57070 > https [FIN,ACK] Seq=80 Ack=1 Win=131328 Len=0

目标 -> Apache SSLv3 服务器 Hello

Apache -> 目标 TCP 57070 > https [RST,ACK] Seq=81 Ack=1461 Win=0 Len=0

答案1

这不起作用的原因是 Apache 将对 CONNECT 请求的响应作为两个单独的数据包发送:

数据包 1:HTTP/1.0 200 连接已建立

数据包 2:代理:Apache/2.2.25 (Win32) mod_ssl/2.2.25 OpenSSL/0.9.8y

我正在从“200 连接”上的套接字读取循环中断开,并且数据包 2 被用作服务器 Hello,因为它是队列中的下一个数据包。

相关内容