ACME.sh – Let’s Encrypt Zertifikate per DNS-Eintrag ausstellen

Kostenlose Let’s Encrypt Zertifikate lassen sich nicht nur mit dem Certbot ausstellen.
Wer z.B. gar kein Webserver hat, sondern nur eine Anwending welche Zertifikate braucht, hat ggf. ein Problem.
Das Ausstellen von Zertifikaten hinter einer geschlossenen Firewall ist ebenfalls ein Problem.
Willst du bei dir Zuhause im privaten Netzwerk ein Zertifikat ausstellen, damit deine Webbrowser und / oder Smartphone-Apps nicht jammern, ist das mit dem Certbot nur möglich, wenn du die Ports nach außen öffnest.
Das ist aber nicht so toll.
Mit dem Tool ACME können wir Zertifikate ausstellen lassen, indem wir uns nur als legitimier Besitzer einer Domain ausgeben können.
Welche IP wir haben und ob Ports von außen erreichbar sind, ist vollkommen egal.
Dies ist meine 0815-So-Gehts-Anleitung, welche auch mir in Zukunft nur die passenden Befehle zur Verfügung stellt, wenn ich sie brauche.
Das ACME-Toole, lässt sich noch mit weiteren Parametern bestücken. Um die soll es hier aber nicht gehen.

Das Projekt ist auf GitHub vorhanden:
https://github.com/acmesh-official/acme.sh

Wir benötigen daher folgendes:
– Eine gültige Domain (darf auch z.B. eine kostenlose .tk-Domain sein)
– Ein System, worauf ACME ausgeführt werden kann (Anleitung basiert auf einem einfachen Linux-System)
– Eine E-Mail-Adresse
– OPTIONAL ABER EMPFEHLENSWERT: Ein API-Zugang für den Domainregistrar


1. ACME installieren

ACME kann einfach per Script installiert werden.
Gebe einfach nur eine gültige E-Mail an.
Tipp: Das Tool muss nicht unbedingt als Root-Benutzer ausgeführt werden! Du kannst gerne ein normalen Benutzer verwenden.

# curl https://get.acme.sh | sh -s [email protected]

Du erhälst per Mail nur eine Info, wenn deine Zertifikate auslaufen sollten und keine automatische Verlängerung durchgeführt wurde.
Ich habe bisher nie Werbung dadurch erhalten.

2. API-Zugriff vom DNS-Registrar besorgen

Damit wir den geringsten Aufwand haben, benötigen wir ein API-Key von deinem Registrar.
Dadurch kann das Tool alles von alleine machen.
Ich beschreibe hier kurz die Wege, wie du an die Token kommst.
Alle unterstützten Anbieter sind HIER aufgelistet.

Beispiel IPv64.net
1. Registriere dich auf der Webseite / Melde dich an
>> https://ipv64.net/
2. Auf der rechten Seite ist dein “API Key” unter “Account Update Token” zu finden

Beispiel CloudFlare
1. Registriere dich auf der Seite / Melde dich an
>> https://dash.cloudflare.com
2. Wähle deine Domain aus
3. Klicke links auf “Überblick”
4. Rechts unten bei “API” folgende zwei Dinge entnehmen
– Zonen-ID
– Konto-ID
5. Auf “Ihr API-Token erhalten” klicken
6. Token erstellen auswählen
7. Die Berechtigen auf folgende Werte setzen:
-> Zone -> DNS
Zonenressourcen
-> Einschließen -> Spezifische Zone -> Domain.com
8. Token anlegen lassen
WICHTIG: Speichere dir den Token lokal ab. Du kannst in nie mehr einsehen, nur noch ändern!

3. Token per Export einbinden

Für IPv64.net:

# export IPv64_Token="API-KEY"

Für CloudFlare:

# export CF_Token="Token"
# export CF_Account_ID="Konto-ID"
# export CF_Zone_ID="Zonen-ID"

Damit er dauerhaft drin ist, können die drei Zeilen ohne # in die Datei .bashrc des jeweiligen Profils eingetragen werden.

# nano ~/.bashrc

4. Zertifikat anfordern

Nun können wir unser Zertifikat anfordern lassen.
ACHTUNG: Die Beispiele basieren auf CloudFlare als DNS-Anbieter! (dns_cf)
Dazu verwenden wir diesen Befehl:

# acme.sh --issue --dns dns_cf -d example.com -d www.example.com

Wenn du ein Zertifikat mit bestimmter Schlüssellänge brauchst, geht das auch:

# acme.sh --issue --dns dns_cf -d example.com -d www.example.com --keylength 4096

Das Ergebnis sollte etwa so aussehen:

[Fri Jul 28 15:12:48 UTC 2023] Your cert is in: /root/.acme.sh/peertube.hoerli.net_ecc/peertube.hoerli.net.cer
[Fri Jul 28 15:12:48 UTC 2023] Your cert key is in: /root/.acme.sh/peertube.hoerli.net_ecc/peertube.hoerli.net.key
[Fri Jul 28 15:12:48 UTC 2023] The intermediate CA cert is in: /root/.acme.sh/peertube.hoerli.net_ecc/ca.cer
[Fri Jul 28 15:12:48 UTC 2023] And the full chain certs is there: /root/.acme.sh/peertube.hoerli.net_ecc/fullchain.cer

Nun kannst du das Zertifikat in deine Anwendungen einbinden.
Achte darauf, dass die Anwendungen auf Lesezugriff auf den Ordner haben, worin die Zertifikate abgelegt wurden.


Wie werden die Zertifikate erneuert?

ACME.sh hat automatisch einen Cronjob eingerichtet, der alle 60 Tage das Zertifikat erneuert.
Sofern du den Zugriff via API sauber eingerichtet hast, werden Zertifikate automatisch aktualisiert.
Du musst also im besten Fall nichts tun.

2 Kommentare

  1. Pingback:Eigenes Captive Portal - Frag nicht immer Google nach Internet - Hoerli.NET

  2. Pingback:Mumble Server installieren - Hoerli.NET

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.