HAProxy zum Beenden von SSL sendet SSL auch an den Back-End-Server

14

Ich möchte SSL bei HAProxy kündigen, den Header manipulieren, die URL umschreiben und den Datenverkehr neu verschlüsseln und als SSL an Back-End-Server senden.

Ich kann anscheinend keinen Weg finden, dies zu tun. Ich kann eine regelmäßige SSL-Kündigung durchführen und einfache HTTP-Anfragen an das Backend senden. Aber ich muss SSL an das Backend senden.

Ich hätte gerne folgende Features:

  • Extrahieren Sie x-forwarded-for-Header, um die echte Client-IP hinter dem Proxy zu ermitteln.
  • Implementieren Sie Session Stickiness mithilfe von Cookies.
  • Führen Sie eine URL-Umschreibung durch.
  • Senden Sie SSL-Datenverkehr mit Cookie-basierter Sitzungshaftigkeit an das Backend.

Wenn ich SSL nicht am Haproxy-Ende beende, kann ich das URL-Neuschreiben nicht durchführen.

Jede Hilfe von den guten Leuten hier wäre sehr dankbar.

Oazabir
quelle
1
Kannst du deine aktuelle Konfiguration posten und uns sagen, was nicht funktioniert?
GregL

Antworten:

29

In haproxy.cfg gibt es nichts Besonderes zu tun. Sie konfigurieren einfach die gewünschten URL-Umschreibungen und Header-Manipulationen in Ihrem HAProxy-Frontend und leiten den Datenverkehr an Ihr SSL-Backend weiter. Hier ist ein kurzes Beispiel:

frontend app1_ssl
    bind *:443 ssl crt /etc/haproxy/certs.d/example.com.crt crt /etc/haproxy/certs.d/ no-sslv3

    option http-server-close
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    reqadd X-Forwarded-Port:\ 443

    # set HTTP Strict Transport Security (HTST) header
    rspadd  Strict-Transport-Security:\ max-age=15768000

    # some ACLs and URL rewrites...

    default_backend             backend_app1_ssl


backend backend_app1_ssl
    server mybackendserver 127.0.0.1:4433 ssl verify none
Schlauchlos
quelle
1
Genial! Lass es mich versuchen. Ich konnte dieses "Server .... ssl" -Ding nirgendwo finden.
Oazabir
Vielen Dank für deine Hilfe. Ich konnte es zum Laufen bringen. Allerdings konnte ich SSL nicht zum Laufen bringen. Könnten Sie bitte helfen? Die Frage ist hier: serverfault.com/questions/738397/…
oazabir
Toll, ich bin froh, dass ich helfen konnte. Vergiss nicht, meine Antwort zu akzeptieren, damit andere sofort sehen können, dass sie hilfreich war ;-)
Tubeless
Funktioniert die Verschlüsselung wirklich so, dass ssl none verifiziert? In der Haproxy-Dokumentation wird "Wenn 'none' festgelegt ist, wird das Serverzertifikat nicht überprüft. In dem anderen Fall wird das vom Server bereitgestellte Zertifikat mithilfe von Zertifizierungsstellen aus 'ca-file' überprüft". Kann das bitte jemand klären?
mjm
Der ssl verify noneDatenverkehr zwischen HAProxy und dem Back-End-Server ist weiterhin verschlüsselt, die Gültigkeit des SSL-Zertifikats des Back-End wird jedoch nicht überprüft.
Tubeless