HAProxy führt keine SNI-Suche durch

HAProxy führt keine SNI-Suche durch

HAProxy v.1.5.18, 1.7.11, lauscht auf einer einzelnen IP-Adresse mit einem Wildcard-SSL-Zertifikat, ich muss mehrere Backends mit SNI-Lookup angeben. Es gibt jede Menge Konfigurationsdateien, die alle angeben, req_ssl_sni -i hostname.example.comwelche ACL bei der Umleitung zu einem bestimmten Backend verwendet werden soll. Mein bester Versuch war, abzufragen req_ssl_sni -m foundund herauszufinden, dass SNI im Frontend nicht zugänglich ist. Wie kann man SNI-Lookup mit einem einzelnen HTTPS-Zertifikat zum Laufen bringen?

haproxy.cfg erfordert Folgendes:

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

Globale Einstellungen und Standardeinstellungen bleiben unverändert. Mit dieser Konfiguration ist das einzige Backend, auf das ich stoße, no-sni, das nach HTTP-Authentifizierung fragt. WTF?!

Antwort1

Nur für den Fall, dass jemand stolpert.Diese Seitewörtlich gesagt: „Um SNI zu aktivieren, müssen Sie HAProxy lediglich mehrere SSL-Zertifikate geben.“ Um SNI-Header im Frontend zu aktivieren, müssen Sie also mehrere PEM-Dateien mitandersZertifikate. Wir haben hier eine einzelne PEM-Datei mit einem Platzhalterzertifikat, sodass SNI in haproxy deaktiviert wird. Daher sollten die Filterung und ACL-Umleitung über hdr(host)ACLs erfolgen, als ob Ihr Backend reines HTTP wäre.

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

verwandte Informationen