HAProxy 不會執行 SNI 查找

HAProxy 不會執行 SNI 查找

HAProxy v.1.5.18、1.7.11,使用通配符 SSL 憑證偵聽單一 IP 位址,我需要使用 SNI 來尋找指定多個後端。有大量的設定檔都說是req_ssl_sni -i hostname.example.com重定向到某個後端時要使用的 ACL。我最好的嘗試是查詢req_ssl_sni -m found並發現 SNI 在前端無法存取。如何使用單一 HTTPS 憑證進行 SNI 查找?

所需的 haproxy.cfg 如下:

frontend https
    bind *:443 ssl interface eth1 crt /etc/haproxy/allstar.company.com.pem
    tcp-request inspect-delay 5s
    tcp-request content accept if { req.ssl_hello_type 1 }
    acl to_webcam req.ssl_sni -i webcam.company.com
    acl to_jira req.ssl_sni -i jira.company.com
    use_backend webcam if to_webcam
    use_backend jira if to_jira
    default_backend no_sni

backend webcam
    acl webcam_auth (hidden)
    http-request auth realm webcam if !webcam_auth
    server ws01 10.x.x.x:8080

backend no_sni
    acl webcam_auth2 (hidden)
    http-request auth realm webcam-no-sni if !webcam_auth2
    server ws01 10.x.x.x:8080

backend drop403
    http-request deny

backend jira
    server jira-test 10.x.x.y:8080

全域和預設值不變。使用此配置,我遇到的唯一後端是要求 HTTP 驗證的 no-sni。搞什麼?

答案1

以防萬一有人絆倒。這個網站字面意思是:「要啟用 SNI,您所需要做的就是為 HAProxy 提供多個 SSL 憑證」。因此,為了在前端啟用 SNI 標頭,需要有多個 PEM 文件,其中包含不同的證書。我們這裡有一個帶有通配符證書的 PEM 文件,因此 SNI 最終在 haproxy 中被禁用。因此,過濾和 ACL 重定向應該透過hdr(host)ACL 完成,就好像您的後端是純 HTTP 一樣。

acl to_webcam hdr(host) -i webcam.company.com
acl to_jira hdr(host) -i jira.company.com
use_backend webcam if to_webcam
use_backend jira if to_jira

相關內容