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 在前端无法访问。如何使 SNI 查找与单个 HTTPS 证书一起工作?

所需的 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。WTF?!

答案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

相关内容