我有一个不寻常的问题。
我在SSL模式下监听给定端口的HAProxy。我可以使用openssl s_client
启动与此HAProxy实例的成功连接。
但是,连接到此HAProxy框的常用客户端需要它自己的特定数据包交换才能启动标准SSL协商。
为了让此特定客户端启动SSL握手,它会尝试使用服务器首先验证服务器是否正常使用SSL。要执行此检查,此特定客户端会将以下字节发送到服务器:
0x00 0x00 0x00 0x08 0x04 0xD2 0x16 0x2F
然后服务器应该回复:
0x53
然后然后客户端将与服务器进行典型的SSL握手(在本例中为HAProxy)。
我的问题:
HAProxy具有多种功能,可以将内容注入发送给客户端的响应中;例如,HTTP标头。
是否可以根据客户端的初始响应向客户端注入特定字节,而不涉及特殊的后端?
我要尝试的方法看起来像这样:
frontend my_frontend
mode tcp
bind :9999 ssl crt /etc/some/path.crt
acl non_standard_client payload(0,8) -m bin 0000000804D2162F
<snip>
use special_backend if non_standard_client
backend regular_backend
server regular 1.2.3.4:9999
backend special_backend
server special 127.0.0.1:9999
然后在HAProxy框上运行这样的东西:
#!/bin/bash
# ASCII `S` is 0x53
while true; do echo -e "S" | nc -l localhost 9999; done
有没有办法在HAProxy中模仿^而不需要第二台服务器来发送魔术字节?
感谢您的时间。非常感谢!
编辑:在任何人问之前:HA-Proxy version 1.6.3 2015/12/25