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]
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]
Admin Portredirection abschalten
Zertifikat erstellen
Die Vorbereitungen sind abgeschlossen und nun kann das eigentliche Zertifikat erstellt werden.
Durch Dücken auf „issue“ wird das Zertifikat erstellt.
Auto Renew aktivieren
Zertifikat eintragen
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.
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.