Haproxy
是否可以在帶有 SNI 的 Stunnel 前面使用 HAProxy?
我在 HAproxy 前面有一個使用 STunnel 的 SSL Termination。
最近,添加對 HTTP/2 的支持的事情被拋到了一邊。使用 HAProxy 很容易,但作為一個約束,STunnel 必須保留。
STunnel 需要保留的原因是大約 17000 行 SNI 以及通過現有 API 管理這些的可能性。
我可以很好地為包含 SNI 的 HAProxy 添加一個證書列表,幾個 grep 和 echo 就可以了。
但是,在我的搜尋過程中,我還沒有發現有人將 HAProxy 放在 STunnel 前面,放在 HAProxy 前面。那是錯誤的方法嗎?
這是我已經開始研究的內容(那裡還沒有 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
ST隧道
[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 需要加密,我需要考慮它們之間的任何協議不匹配。
如果 STunnel 是什麼,HAProxy 的tcp-request 連接 expect-proxy layer4 的 STunnel 版本是什麼?
非常感謝任何幫助獲得 STunnel 的 HTTP/2 支持,以及獲得“不要那樣做,這是錯誤的”。
謝謝,
haproxy
如果它有證書解密 ssl,則只能看到(HTTP/2 協議)數據。意味著haproxy
需要與stunnel
.如果這能以某種方式工作,這將意味著解密它
haproxy
並再次加密它stunnel
,讓它再次解密。