HAProxyはSNIルックアップを実行しません

HAProxyはSNIルックアップを実行しません

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

関連情報