Letsencrypt Zertifikate mit DNS Challenge für Proxmox

Moin allerseits,

ich möchte hier mal meine Erfahrung teilen:

Ich betreibe im Homelab einen Proxmox Cluster. Auf dem ersten node (pve1) hatte ich bisher die HTTP Challenge von Letsencrypt laufen. Das hat eigentlich auch ganz gut funktioniert.

Wenn es an der Zeit war, das Zertifikat zu erneuern, musste ich auf meiner Fritzbox den Port 80 kurzzeitig öffnen, dann auf dem Node das Zertifikat erneuern und schlussendlich auf der Fritzbox den Port 80 wieder dichtmachen

Nun stellt Letsencrypt die Gültigkeitsdauer um von 90 auf 60 Tage. Ich müsste zukünftig also viel öfter mein Zertifikat nach der oben beschriebenen Methode erneuern. Wer weiß, wann die Gültigkeit auf 6 Tage heruntergeschraubt wird. Dann hätte ich ja nichts anderes mehr zu tun, als Zertifikate zu aktualisieren. (Spaß)

Also: angeregt duch das Video von @Dennis_Admin dachte ich mir, das sollte doch auch mit meiner Proxmox VE laufen. Vorweg: Es geht und es ist kindereinfach. Man muss nur wissen wie.

  1. Ich habe mir einen extra API Key in IPv64 angelegt. Account / Add new API key. Meinen neuen API Key habe ich „Proxmox-LE“ genannt. Das ist zwar nicht unbedingt notwendig, weil man auch den Standard API Key verwenden kann, aber wenn man alles sauber trennen will, dann nimmt man einen eigenen API Key für die Letsencrypt Challenge. Wer mag kann ja darüber hinaus auch die Gültigkeitsdauer des API Keys einschränken. Hab ich aber nicht gemacht.
  2. Im Proxmox Datacenter unter dem Punkt „ACME“ habe ich eine frisches Letsencrypt Konto angelegt. Kontoname wählen, gültige E-Mail Adresse hinterlegen und für den produktiven Einsatz das ACME Verzeichnis „Let’s Encrypt V2“ wählen. Achtung. Die Anzahl Anfragen an Letsencrypt sind endlich. Wer erst einmal nur „probieren“ möchte, der nimmt an dieser Stelle das ACME Verzeichnis „Let’s Encrypt V2 Staging“. Verlinktes Agreement lesen, verstehen, dann „Nutzungsbedingungen akzeptieren“ anhaken und auf „Registrieren“ klicken.
  3. Als nächstes benötigen wir das Challenge-Plugin: Also Hinzufügen, dann Plugin-ID wählen (bei mir heißt das „PVE-LE“). Verzögerung bei 30 Sekunden lassen. Unter DNS-API wählen wir „ipv64“ (Danke @Dennis_Admin) und bei den API-Daten tragen wir folgenden String ein: „IPv64_Token=Dein-API-Key-den-Du-in-Schritt-1-erstellt-hast“
  4. Nun wenden wir uns dem PVE Node zu, dem wir das LE Zertifikat geben wollen. Bei mir ist das z.B. mein pve1 node. Dort geht man auf System / Zertifikate und fügt unter ACME ein Zertifikat hinzu. Als Validierungstyp trägt man „DNS“ ein. Als Plugin wählt man das unter Punkt 3 erstellte Plugin aus. In meinem Fall heißt das „PVE-LE“.Unter Domäne trägt man dann den fqdn des PVE hosts ein, also zum Beispiel „pve1.deine-ipv64-domain.ipv64.de“ ein. Abspeichern. Fertig.
  5. Als nächstes wählt man das eben erstellte Element aus und klickt auf „Zertifikat jetzt anfordern“. Es lohnt sich, nebenbei seinen Account in ipv64.net geöffnet zu haben und mal auf die Domain zu schauen. @Dennis_Admin hat es in dem oben verlinkten Video auch gemacht. Man aktualisiert die Seite regelmäßig. Dann sieht man, wie das acme-Skript des Proxmox einen TXT Record einträgt. Es folgt die Wartezeit (siehe oben 30 Sekunden), danach folgt die eigentliche Anfoderung und Überprüfung des Zertifikats bei LE. Kurz danach löscht das acme Skript den TXT Record wieder und in Proxmox sieht man, wie das neu erhaltene Zertifikat aktualisiert wird. Wenn „Task OK“ erschein, ist alles paletti. Seite neu laden und über den Browser das neue Zertifikat prüfen.

Bei mir läuft das.Super sogar. Ich muss nun nicht mehr manuell mein Zertifikat abholen und vorher irgendwelche Ports 80 freischaufeln und umbiegen. Von mir aus kann LE nun die Gültigkeitsdauer auf 24h runtersetzen. Ich hab mit der Aktualisierung nix mehr zu tun. Und weil es so gut geklappt hat, hab ich das für alle nodes in meinem Cluster gleich mal umgesetzt. Also Schritte 4 und 5.

Hoffe, dass ihr das brauchbar findet.

Das geht ähnlich auch mit sensen. Bei mir konkret pfsense.

Vielen Dank @ReBr ich hätte es nicht besser beschreiben sollen. Darf ich deinen Text nutzen um daraus einfach einen Blogbeitrag zu generieren ?

Na klar. Getestet unter der aktuellen Proxmox VE… Stand heute
Gruss Reinhard