HAProxy 可以在 Stunnel 前面使用 SNI 吗?

HAProxy 可以在 Stunnel 前面使用 SNI 吗?

我在 HAproxy 前面有一个使用 STunnel 工作的 SSL 终端。

最近,有人向我提出了添加对 HTTP/2 的支持的问题。使用 HAProxy 很容易,但作为一个限制,STunnel 必须保留。

STunnel 需要保留的原因是大约有 17000 行 SNI,并且可以通过已经存在的 API 来管理它们。

我可以很好地为 HAProxy 添加一个包含 SNI 的证书列表,几个 greps 和 echo 就可以完成。

但是,我搜索了好久,还没发现有人把 HAProxy 放在 STunnel 前面。这是错误的方法吗?

以下是我已经开始研究的内容(其中还没有 SNI - 对于一篇文章来说 17000 个有点太多了):

HAProxy 前端(我需要添加 HTTP/2 支持)对 STunnel 进行加密:

listen frontend
bind 192.168.1.100:443 transparent  
mode http  
server stunnel 127.0.0.100:443 ssl verify none

隧道

[STunnel]
    cert = /etc/ssl/certs/cert.pem
    ciphers =
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256
-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA
256:AES256-GCM-SHA384:AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-
RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-
RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:AES128-GCM-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA
    accept = 127.0.0.100:443
    connect = 127.0.0.100:80
    delay = yes
    options = NO_SSLv3
    options = NO_TLSv1
    options = NO_TLSv1.1
    options = NO_TLSv1.3
    options = CIPHER_SERVER_PREFERENCE
    options = DONT_INSERT_EMPTY_FRAGMENTS
    renegotiation = no
    protocol = proxy
    local = 127.0.0.100
    TIMEOUTclose = 0

HAProxy“后端”

listen Web
    bind 127.0.0.100:80 transparent accept-proxy
    mode http
    balance leastconn
    acl SSL-443 src 127.0.0.100
    tcp-request connection expect-proxy layer4 if STunnel
    option http-keep-alive
    timeout http-request 5s
    timeout tunnel 1h
    option redispatch
    option abortonclose
    maxconn 40000
    option httplog
    server server1 192.168.1.98:80  check
    server server2 192.168.1.99:80  check

我假设从 HAProxy 到 STunnel 需要加密,并且我需要考虑它们之间的任何协议不匹配。

HAProxy 的 STunnel 版本是什么tcp 请求连接,如果是 STunnel,则需要代理第 4 层将会?

非常感谢任何有关通过 STunnel 获取 HTTP/2 支持的帮助,以及得到“不要这样做,这是错误的”的帮助。

谢谢你,

答案1

haproxy仅当证书具有解密 SSL 的权限时才可以看到(HTTP/2 协议)数据。意味着haproxy需要与 相同的证书stunnel

如果这能以某种方式起作用,这将意味着对其进行解密haproxy并再次对其进行加密stunnel,然后让其再次解密。

相关内容