HAProxy、PROXY 协议和 SSL 附加功能

HAProxy、PROXY 协议和 SSL 附加功能

我正在尝试设置 HAProxy 以使用 PROXY 协议传递 SSL 信息。到目前为止,我还没有成功。我的测试配置:

global
        chroot /tmp/haproxy-chroot
        log stderr format raw local0 debug

defaults
        mode tcp

frontend testpp
         bind *:5000
         mode tcp
         option tcplog
         option logasap
         log global
         timeout client 1s #15s
         default_backend nginx

backend nginx
        mode tcp
        log global
        timeout server 1s #20s
        timeout connect 1s #10s
        server nginx1 localhost:443 send-proxy-v2-ssl

但是,当我运行 tcpdump 时,我没有看到额外的数据:

        0x0000:  4500 029e 0918 4000 4006 3140 7f00 0001  E.....@[email protected]@....
        0x0010:  7f00 0001 c55c 05a3 905c 04de 5983 fd53  .....\...\..Y..S
        0x0020:  8018 0156 0093 0000 0101 080a 96ee 0dcb  ...V............
        0x0030:  96ee 0dcb 0d0a 0d0a 000d 0a51 5549 540a  ...........QUIT.
        0x0040:  2111 0014 47a2 f3d2 0a01 015c d6b2 1388  !...G......\....
        0x0050:  2000 0500 0000 0000 1603 0102 4101 0002  ............A...
                                      ^-------------------TLS starts here

如果我只使用send-proxy-v2(否-ssl)运行,我就会看到完全相同的东西。

我是否遗漏了有关其应如何运作的一些信息?

答案1

从您的配置来看,HAProxy 不处理连接的 SSL 部分,因此它无法在 PROXY 协议标头中提供 SSL 信息。

crt <cert>向您的前端添加一个指令bind,您应该在 PROXY 协议标头中看到 SSL 信息。

如果你仔细想想,这很正常,因为如果 HAProxy 尽管没有处理 SSL 终止却向你提供该信息,它就无法适当地请求客户端证书、提供密码套件或握手期间协商的任何其他选项。

答案2

要添加到@Ginnungagap的答案,您可以通过设置来在tcpdump输出中查看其他代理协议TLV send-proxy-v2 proxy-v2-options crc32c。无需SSL终止。

相关内容