Shared Frontend mit HA-Proxy



  • Hallo zusammen,

    ich habe auf meiner PFSense LetsEncrypt eingerichtet und anschließend den HA-Proxy. Ich habe eine feste WAN-IP die an der PFSense anliegt (10.20.30.40).

    Für einen lokalen Host "gw.mydomain.de" (hier läuft die Groupware) klappt das auch problemlos. Ich habe auf meinem Webserver (öffentlich bei All-Inkl) einen A-Record gesetzt:

    gw.mydomain.de -> 10.20.30.40

    Auf der PFSense ein Backend angelegt:
    Name: gw.mydomain.de
    Forwardto: Adress+Port
    Address: 192.168.24.6
    Port: 443
    Encrypt(SSL): yes
    SSL checks: no

    und ein Frontend:

    Name: gw.mydomain.de

    [External address]
    Listen address: WAN address (IPv4)
    Port: 443

    [Access Control lists]

    Name: gw.mydomain.de
    Expression: Host matches: gw.mydomain.de

    [Aktion]
    Action: Use Backend
    Condition acl names: gw.mydomain.de
    backend: gw.mydomain.de

    [SSL Offloading]
    Zertifikat: gw.mydomain.de (... LetsEncrypt...)

    Das funktioniert auch alles. Wenn ich von extern https://gw.mydomain.de aufrufe lande ich auf dem internen Groupware-Server und das Zertifikat ist korrekt und Vertrauenswürdig.

    Nun möchte ich jedoch zwei weitere interne Maschinen ebenso erreichen. Auf dem All-Inkl-Server habe ich dazu zwei weitere A-Records gesetzt:

    pbx01.mydomain.de -> 10.20.30.40
    cloud.mydomain.de -> 10.20.30.40

    Jetzt kommen die Fragen/Schwierigkeiten. In PFSense brauche ich hierzu ja ein Shared Frontend Im Frontend gibt es ja eine entsprechende Option "Shared Frontend" Wenn ich diese aktiviere ändert sich die Maske und ich muss ein Primary frontend angeben. Hier steht jedoch nur das Frontend was ich für die acme-challange angelegt habe zur Auswahl was ja nicht richtig sein kann.

    Wie muss ich für die Konfiguration des Shared Frontend vorgehen?

    Viele Grüße
    sven



  • Hallo zusammen,

    ich habe hier:
    https://blog.devita.co/pfsense-to-proxy-traffic-for-websites-using-pfsense/

    gefunden wie es funktioniert.. Also erledigt :-)



  • wieso ein shared frontend
    für die gleiche domain ?

    aber wenns funktioniert !
    lgNP



  • ich kann die Frage wahrscheinlich nicht adäquat beantworten aber ich habe ja keine Wildcard-Zertifikate - also ein Zertifikat pro Hostname. Wenn ich kein shared Frontend mache kann ich in einem Frontend ja nur ein Zertifikat auswählen und somit nur einen Host mit einem verifiziertem Zertifikat ansprechen.

    Nun habe ich ein Frontend (ohne die Option "Shared Frontend") angelegt - es trägt lediglich den Namen "shared_frontend" und hierfür ein eigenes Zertifikat angelegt. Bei den einzelnen Frontends für die tatsächlichen Hosts habe ich "shared_frontend" als prmäres Frontend angewählt, die Option "Shared Frontend" ausgewählt und unter Erweitert:

    • Specify additional certificates for this shared-frontend.

    • Zertifikat für den tatsächlichen Host ausgewählt und:

    • Add ACL for certificate CommonName. (host header matches the "CN" of the certificate)

    • Add ACL for certificate Subject Alternative Names.

    gesetzt. Die Vorgehensweise erschien mir logisch denn ohne die Option "Shared Frontend" kann ich jedem Frontend ja nur ein einziges Zertifikat zuordnen und somit nur einen Hostnamen ansprechen. Versuche ich ein zweites Frontend für den zweiten Host anzulegen - was ich zuerst probiert habe - meckert er da es auf die gleiche öffentliche IP zeigt. Das funktioniert somit nicht.

    Wie gesagt ... das geschriebene ist unter Vorbehalt zu sehen da ich noch nicht so wirklich Tief im Thema drin bin. Sollte meine Vorgehensweise nicht korrekt sein oder einfach nicht optimal bin ich für jede Erleuchtung sehr dankbar :-)



  • Versuch mal folgenden Ansatz
    für jedes backend das du von extern auf der gleichen IP+Port (für den Anfang) mit ssl offloading erreichen willst

    a) im frontend das Zert für das erste Backend eingeben

    d1a7d735-23d2-4fc9-8bfb-17a105924eff-grafik.png

    b) weiter unten die Zertifikate für jedes weitere Backend eintragen
    fa950d8f-6d97-4b6f-bae5-597336842bce-grafik.png

    63ad6e74-2bc7-4d5c-9f13-1ad7dfeeed85-grafik.png

    1. deine CA eintragen
      fc25a24b-46ca-4711-af74-3df75a7a49b7-grafik.png

    den Rest mittels ACL host matches machen

    !!Nicht vergessen!! ein default backend zu definieren wenn die ACLs nicht greifen das er darauf zurück fällt (man kann drüber diskutieren ob das sinnvoll oder anders zu handhaben aber für die Fehlersuche sehr hilfreich)

    so rennt das mit einer domain und ein paar backends ;)
    alle Certs via LE / DNS zeigt mittels A Record auf die extIP

    lgNP


Log in to reply