
HAProxy v.1.5.18、1.7.11、ワイルドカード SSL 証明書を使用して単一の IP アドレスでリッスンする場合、SNI ルックアップを使用して複数のバックエンドを指定する必要があります。特定のバックエンドにリダイレクトするときに使用する ACL として指定されている構成ファイルが大量にあります。私の最善の試みは、クエリを実行して、フロントエンドで SNI にアクセスできないことを確認することでした。単一の HTTPS 証明書で SNI ルックアップを機能させるにはどうすればよいですかreq_ssl_sni -i hostname.example.com
?req_ssl_sni -m found
必要な 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 ファイルがあるため、haproxy では SNI が無効になります。したがって、hdr(host)
バックエンドがプレーン HTTP であるかのように、フィルタリングと ACL リダイレクトは ACL 経由で実行する必要があります。
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