我可以使用HAProxy根据请求将原始字节注入客户端吗?

时间:2017-11-15 23:27:43

标签: postgresql ssl haproxy

我有一个不寻常的问题。

我在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

0 个答案:

没有答案