In einer Umgebung mit einer PFSense als Firewall auf der ein HA-Proxy läuft sollen für die GUI selbst auch LetsEncypt Zertifikate verwendet werden. Möglichst so, dass nach der Implementierung keine weitere Wartung erforderlich ist.

Ausgangssituation:

  • HA-Proxy belegt bereits die WAN Ports 80 und 443 und ist für Server eingerichtet
  • Es sollen keine DNS TXT Records verwendet werden für LetsEncypt

Realisierungsidee:

Port 80 der PFSense Firewall auf der LAN Seite für den acme Client (LetsEncypt) verwenden und durch den HA Proxy schleusen. Absichern des Ports durch eine Zeitsteuerung (Shedule).

Umsetzung (auf PFSense):

Installation acme

Zunächst muss der acme Client installiert werden:

System -> Package Manager -> Available Packages

Acme Key erstellen und registrieren

dazu im Menu [Services] -> [Acme Certificates] auswählen

Dann den Key erstellen:

HA-Proxy für Acme Client einrichten

Backend erstellen

Unter [Services] -> [HA-Proxy] den Punkt [Backend] auswählen.

Nun das Backend anlegen. Wobei die IP Adresse die der LAN-Schnittstelle der PFSense sein muss – der Name kann frei vergeben werden. Healthcheck auf „none“ setzen.

Frontend erstellen

Unter [Services] -> [HA-Proxy] -> [Frontend]

Name und Description kann frei vergeben werden
2 ACL’s anlegen eine für den echten Hostname (public fqdn) und einmal für die Public IP. Ich empfehle die Expression „Host matches“.
und die Action denfinieren (also was soll passieren wenn die Regel zutrifft). Hier genau den Namen verwenden, den wir bei der Regel verwendet haben und das Backend, das vorher angelegt wurde.

Firewall Regel erstellen

Damit der Acme Client erreicht werden kann muss noch der Firewall die Erlaubnis für den Port erteilt werden. Das geht unter [Firewall] -> [Rules] -> [LAN]

Nun die Regel setzen, dass auf der (PFSense eigenen) LAN Adresse auf Port 80 (http) zugegriffen werden darf.

Admin Portredirection abschalten

Unter [System] -> [Advanced] -> [Admin Access]
Hier das Redirect ausschalten – damit auch hier der Port 80 frei ist.

Zertifikat erstellen

Die Vorbereitungen sind abgeschlossen und nun kann das eigentliche Zertifikat erstellt werden.

Unter [Services] -> [Acme] -> [Certificats] nun das Zertifikat wie folgt erstellen
Bei Methode „Standalone Server“ auswählen und den vollen eigenen Hostnamen (der der PFSense) angeben. Acme Account (Key) muss der sein, welchen wir vorher angelegt haben

Durch Dücken auf „issue“ wird das Zertifikat erstellt.

Auto Renew aktivieren

Unter [General settings] den Haken für Cron Entry setzen

Zertifikat eintragen

Unter [System] -> [Advanced] -> [Admin Access] das neue Zertifikat auswählen

Sicherheit: Portregel beschränken

Zur Sicherheit richten wir noch einen Sheduler ein, damit der Port 80 auf der Firewall nur dann geöffnet ist, wenn auch ein Renewal gemacht wird.

[Firewall] -> [Schedules] auswählen und auf Add klicken
Name und Beschreibung vegeben. Auf die Tage (alle) klicken. und bei Time 3:15 bis 3:30 eingeben! Keine andere Zeit verwenden! Dann [Add Time] und [Save]

Zuletzt muss der Zeitplan noch in der Regel für den Port 80 hinterlegt werden. Dazu gehen wir nochmal in die Firewallregel die wir vorher erstellt haben und wählen unten den Punkt [Show advanced Options] aus.

Fertig. Wenn wir nun die Firewall über den public Name aufrufen bekommen wir keinen Zertifikats Fehler mehr.