pfsense HAproxy HTTPS frontend to HTTP backend (Server hat kein SSL laufen)
-
Hallo zusammen,
ich bin ein bisschen am verzweifeln. Ich habe im lokalen backend eine Webseite die nicht mit SSL eingerichtet werden kann. Aber ich habe bereits ein Wildzertifikate von Let'sEncrypt und eine http-request redirect rule zu https, für alle Webseiten die mit SSL eingerichtet sind.
Meine Frage: wie kann ich HAproxy auf pfsense so einrichten dass auf dem Frontend HTTPS ist und die Server mit HTTP laufen?
Im Englischen Foren habe ich schon was gefunden aber mit dem Übersetzer und schwachen Englisch bin dort ein wenig überfordert.
Aktuelle Einstellung im pfsense HAproxy frontend
besten Dank euch......
-
@dk_e
Kannst du etwas deutlicher ausformulieren, was du erreichen möchtest?
Nur für die betroffene Seite soll unverschlüsselt auf das Backend gehen oder auch die übrigen?Das SSL-Zertifikat hast du am Backendserver oder auf der pfSense? Auf letzterer wird es jedenfalls benötigt. Am Backend auch, falls die Seite dort verschlüsselt bleiben sollen.
Ich nehme an, alle Seiten gehen auf dieselbe WAN IP, bzw. du hast nur eine?
Ist in HAproxy schon irgendein Frontend auf Port 443 eingerichtet? Wenn ja, mit welcher Konfiguration?
Auf jeden Fall, wenn HAproxy die eine Webseite bereitstellen soll, müssen auch alle anderen Seiten auf dieser IP drüberlaufen.
Edit: Ein grundsätzliche Frag noch.
@dk_eIch habe im lokalen backend eine Webseite die nicht mit SSL eingerichtet werden kann.
Was hat das für Gründe?
Wenn HAproxy das macht, ist sie auch SSL. Ein HAproxy Frontend ist im Grunde nichts anderes als ein Webserver. -
@viragomann said in pfsense HAproxy HTTPS frontend to HTTP backend (Server hat kein SSL laufen):
irgendein Frontend auf Port 443 eingerichtet? Wenn ja, mit welcher Konfiguration?
Auf jeden Fall, wenn HAproxy die eine Webseite bereitstellen soll, müssen auch alle anderen Seiten auf dieser IP drüberlaufen.
Edit: Ein grundsätzliche Frag noch.Danke dir für die schnelle Antwort
Es soll vorerst nur für die betroffene Seite eingerichtet werden. (Eventuell in Zukunft mehr)
SSL-Zertifikat ist auf der pfsense. Am Backend sollte es eigentlich egal sein, weil der Webserver läuft ja ohne SSL bzw sollen nicht verschlüsselt werden???Ja eine WAN-Adresse mit Domain und Subdomain auf alle Webseiten ist bereits eingerichtet.
Funktioniert auch mit HTTPS und das umrouten von HTTP auf HTTPS für die Webseiten mit SSL.
Nur die HTTP also ohne SSL Webseite geht nicht."Auf jeden Fall, wenn HAproxy die eine Webseite bereitstellen soll, müssen auch alle anderen Seiten auf dieser IP drüberlaufen." -> Wenn du die WAN-Adresse meinst Ja.
Ich habe im lokalen backend eine Webseite die nicht mit SSL eingerichtet werden kann.
Was hat das für Gründe? -> Es geht hier um Home Assistant, und als Client verwende ich vom Smartphone bis zum Kühlschrank und USV das Dashboard als Interface. Leider so habe ich festgestellt werden in den IoTs schwache prozessoren verbaut. Und wenn ich Home Assistant mit HTTPS aufrufe über einen Client (bsp. altes Tablet) ist die Verarbeitung sehr langsam. Ein Lichtschalter muss in Nanosekunde an gehen nicht in 3-4 Sekunden. mit HTTP geht's das komischer weiße. Draußen im Internet soll aber Home Assistant nur über HTTPS laufen. Deswegen der aufwand....
-
@dk_e said in pfsense HAproxy HTTPS frontend to HTTP backend (Server hat kein SSL laufen):
Es geht hier um Home Assistant,
Wäre es nicht eh besser, das Internet von diesem fern zu halten?
Aber das soll deine Entscheidung sein.Du hast es ja offenbar schon im existierenden Frontend integriert.
Aber es funktioniert nicht?Ist das Backend online in den Stats?
Das SSL-Zertifikat des Frontends deck auch den HomeAssistant Hostnamen ab, nehme ich an.
Wenn das Backend online ist, die Anfragen aber nicht zum Backend geleitet werden, greift die Regel im Frontend nicht. Dann würde ich mal mit Packet Capture am internen Interface schauen, ob die Pakete vielleicht an die falsche IP gehen.
Deine ACLs lassen Spielraum, nachdem sie nur auf "host contains" schauen. Ich verwende lieber "host matches", wo es möglich ist. -
@viragomann
Das SSL-Zertifikat des Frontends deck auch den HomeAssistant Hostnamen ab, nehme ich an.
-> Ja dank WildcardWäre es nicht eh besser, das Internet von diesem fern zu halten?
-> ja ich hab leider bis jetzt auch keine schöne Lösung. Statt den Shelly-Lichtschalter direkt ans Internet zu öffnen mache ich lieber es lieber über ein Umweg/Proxy an Home Assistant. Proprietäre GPS-Peilsender kann beispielsweise schwer in seinen Lokalen Netz kriegen. Aber Egal.---> Ist das Backend online in den Stats? <----
Und das war der Fehler:
Nachdem ich auf Basic umgestellt habe, war alles grün und die Webseite ist nun per SSL erreichbar.
Unglaublich das mir so ein Fehler passiert ist. Aber da merkt man Profis wie dich viragomann die alles nachfragen wie eine Checkliste damit alle Knöpfe richtig geschallten sind damit das Flugzeug starten kann.
Danke dir...
-
@dk_e
Kann passieren. Fein aber, dass es, wie gewünscht, läuft.Wenn es zu dem Hostnamen keine alternativen Backends gibt, kann der Health Check auch ganz entfallen. Der macht eher bei einem Failover Sinn. Ansonsten hilft es nur, dem Client schneller eine Antwort zu liefern, falls es nicht reagiert.
-
@dk_e said in pfsense HAproxy HTTPS frontend to HTTP backend (Server hat kein SSL laufen):
Nachdem ich auf Basic umgestellt habe, war alles grün und die Webseite ist nun per SSL erreichbar.
Kurze Ergänzung dazu: Ich mutmaße mal, dass das Backend nichts zurückgeliefert hat bei HTTP Zugriff, dafür kann man aber u.a. im Health Check für HTTP Mode bspw. einen Hostnamen o.ä. mitgeben, damit die Antwort korrekt zurückkommt. So wird jetzt lediglich ein Basic Ping/Port check gemacht (L4) aber nicht geprüft ob der Dienst auch korrekt antwortet. Das kann auch OK sein :) Aber wenn man den Dienst selbst fragen will, braucht man eine gültige aufrufbare URL und den Hostnamen, ggf. noch den Host-Header setzen und los gehts. :)
Mitunter liegts auch nicht am Pfad, sondern an der Methode. Einige Dienste sichern sich inzwischen gegen HTTP <XY> Calls ab, die nicht gebraucht/geliefert werden, also werden bspw. HEAD, OPTION o.ä. geblockt vom Server. HomeAssistant gehört da IMHO dazu, deshalb würde es dafür eigentlich reichen, den Check auf HTTP zu stellen, Log Checks reinzumachen, als URL "/" anzugeben und ggf. noch die HTTP Check Version zu setzen aber am Wichtigsten die "Check Method" auf GET zu ändern. Siehe hier:
Mein HomeAssistant hört auf 172.27.2.11 wie man im Host Header sehen kann, darum ist der in der check version einfach mit drin - ginge wahrscheinlich auch ohne :) Wichtig war hier nur auf
GET
zu gehen, daOPTIONS
nicht unterstützt wird.Cheers
-
@viragomann said in pfsense HAproxy HTTPS frontend to HTTP backend (Server hat kein SSL laufen):
Wenn es zu dem Hostnamen keine alternativen Backends gibt, kann der Health Check auch ganz entfallen. Der macht eher bei einem Failover Sinn. Ansonsten hilft es nur, dem Client schneller eine Antwort zu liefern, falls es nicht reagiert.
Das zum Einen, zum anderen hilft es aber auch gleich zu sehen ob ein Problem technisch vom Proxy oder Server stammt. Liefert der Proxy wenigstens die Seite, dass kein Backend verfügbar ist, dann weiß man wenigstens schon grob wo man suchen muss