PfSense - ACME-Zertifikate auf anderen Server kopieren
Aus znilwiki
Changelog:
- 15.06.2024 erste Version
Vorwort
Ich liebe den pfSense ACME-Service (im Package Manager installierbar).
In diesem kann ich bequem den Abruf von Zertifikaten auch per DNS-Challange und über die IONOS-API einrichten.
Auf Wunsch werden die Zertifikate auch noch mal separat im Ordner
/conf/acme
auf der pfSense gespeichert um diese auch woanders verwenden zu können.
Am einfachsten an diese Zertifikate heran zu kommen, ist diese zu pushen, also von der pfSense aus automatisch auf das andere System kopieren zu lassen.
Das Erstellen der zusätzlichen Zertifikatsdateien aktivieren
Wir aktivieren den Punkt Write Certificates:
SSH Key erzeugen
Wir melden uns per SSH an der pfSense an (Benutzer admin):
und wählen Option 8.
Dann geben wir den Befehl
ssh-keygen ein, die Passphrase lassen wir leer:
Nun können wir uns den Public Key anzeigen lassen:
cat /root/.ssh/id_rsa.pub
Die Ausgabe kopieren wir uns in die Zwischenablage.
Wir Melden uns am Zielsystem per SSH an - mit dem Benutzer unter dem die Dateien abgelegt werden sollen - und bearbeiten die Datei
nano ~/.ssh/authorized_keys2
dort fügen wir den zuvor kopieren Schlüssel in einer neuen Zeile ein und speichern die Datei.
Das testen wir nun indem wir uns von der pfSense aus an diesem Server anmelden. Beim allerersten mal fragt er ob der Fingerprint gespeichert werden soll - was wir bejahen:
Wenn Ihr euch einmal mit exit
wieder trennt und noch mal neu verbindet sollte es ohne Nachfrage geschehen.
Kopieren testen
Auf dem Zielsystem müsst Ihr den gewünschten Zielpfad anlegen, dazu also per SSH am Zielsystem angemeldet sein!
mkdir -p /pfsensemeisenweg1/acme/
Nun können wir von der pfSense aus testen ob wir die Dateien dorthin schieben können:
scp -r -i /root/.ssh/id_rsa /conf/acme root@192.168.1.2:/pfsensemeisenweg1/acme
Die Parameter:
scp : der Kopierbefehl -r : Rekursiv, also inklusive eventueller Unterverzeichnisse -i /root/.ssh/id_rsa : Benutze zur Anmeldung folgenden privaten Schlüssel /conf/acme : Quellordner der kopiert werden soll (also dessen Inhalt) root@ : Benutzer auf dem Zielsystem 192.168.1.2: : DNS-Name oder IP des Zielsystems, gefolgt von einem : /pfsensemeisenweg1/acme : Zielpfad (unterhalb dessen die Dateien eingefügt werden
Der Befehl überschreibt jedes mal, löscht aber nichts!
Befehl bei den Zertifikatsanforderungen hinterlegen
Unter
Service => Acme Certificates => Certificates
sehen wir die einzelnen Zertifikatsanforderungen.
Ganz unten bei einer Anforderung gibt es die Action list, dort fügen wir unseren scp Befehl als neues Shell Command ein:
Das kopieren wird nun jedes mal ausgeführt wenn das Zertifikat erneuert wurde.
Nicht alle sondern nur ein bestimmtes Zertifikat kopieren
Um nur ein Zertifikat zu kopieren könnte Ihr den Befehl wie folgt abwandeln:
scp -i /root/.ssh/id_rsa /conf/acme/pfsensemeisenweg1.znil.org* root@192.168.1.2:/pfsensemeisenweg1/acme/
Also das -r
weglassen, den Namen des Zertifikates ohne die Dateiendungen, gefolgt von einem *
Diesen Befehl fügt Ihr dann statt dessen als Shell Command bei der Zertifikatsanforderung ein.
Quellen
Inspiriert von: https://victorlclopes.medium.com/copy-pfsense-acme-certificate-to-another-server-e42c611c47ec
Ich habe abgewandelt das entweder alle Zertifikate kopiert werden (so kann man den Befehl einfach bei jedem Zertifikat gleich einfügen) oder im 2. Beispiel alle 5 Dateien eines Zertifikates (und nicht nur 3).