Aktionen

PfSense - ACME-Zertifikate auf anderen Server kopieren

Aus znilwiki

Version vom 15. Juni 2024, 12:19 Uhr von BLinz (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „<u>Changelog:</u> * 15.06.2024 erste Version ---- ==Vorwort== Ich liebe den pfSense ACME-Service (im Package Manager installierbar).<br> In diesem kann ich bequem den Abruf von Zertifikaten auch per DNS-Challange und über die IONOS-API einrichten.<br> Auf Wunsch werden die Zertifikate auch noch mal separat im Ordner<br> /conf/acme auf der pfSense gespeichert um diese auch woanders verwenden zu können.<br> Am einfachsten an diese Zertifikate heran zu ko…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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:

ClipCapIt-240615-124651.PNG

SSH Key erzeugen

Wir melden uns per SSH an der pfSense an (Benutzer admin):

ClipCapIt-240615-124947.PNG

und wählen Option 8.
Dann geben wir den Befehl

ssh-keygen ein, die Passphrase lassen wir leer:
ClipCapIt-240615-125211.PNG

Nun können wir uns den Public Key anzeigen lassen:

cat /root/.ssh/id_rsa.pub
ClipCapIt-240615-125436.PNG

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:

ClipCapIt-240615-125852.PNG

Wenn Ihr euch einmal mit exit wieder trennt und noch mal neu verbindet sollte es ohne Nachfrage geschehen.


Kopieren testen

Important.png
Hinweis: Diese Variante kopiert jedes mal alle vorhandenen Zertifikate!

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
ClipCapIt-240615-130250.PNG

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:

ClipCapIt-240615-131028.PNG


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).


Kommentare

Loading comments...