Zum Inhalt springen

ACME-Zertifikate mit lego

Der ACME-Client lego bezieht Zertifikate von Let’s Encrypt und anderen ACME-Anbietern und nutzt dabei regfish als DNS-Anbieter für die Validierung. Weil die Prüfung über DNS läuft und nicht über den Webserver, funktionieren damit auch Wildcard-Zertifikate, und der Server muss dafür nicht aus dem Internet erreichbar sein.

  • Ein API-Key mit Schreibrecht auf DNS. lego legt für die Validierung einen TXT-Record an und entfernt ihn danach wieder.
  • Eine Domain, deren DNS bei regfish liegt.
  • Go auf dem System, oder die folgende Installation.

Falls Go noch fehlt, entweder über den Paketmanager der Distribution oder direkt. Die jeweils aktuelle Version steht auf go.dev:

Terminal-Fenster
curl 'https://go.dev/dl/go1.24.2.linux-amd64.tar.gz' -LO
sudo tar -C /usr/local -xzf go1.24.2.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
Terminal-Fenster
go install github.com/go-acme/lego/v4/cmd/lego@latest
Terminal-Fenster
export REGFISH_API_KEY='dein-api-key'
Terminal-Fenster
~/go/bin/lego \
--email du@example.com \
--dns regfish \
-d '*.example.com' \
-d example.com \
run

Der erste Eintrag deckt alle Namen einer Ebene ab, der zweite die Domain selbst; eine Wildcard allein schließt example.com nicht ein. Zertifikat und Schlüssel legt lego unter ~/.lego/certificates/ ab.

Zum Verlängern dient renew statt run, üblicherweise täglich per Cron oder systemd-Timer. lego verlängert nur, wenn es nötig ist:

Terminal-Fenster
~/go/bin/lego --email du@example.com --dns regfish \
-d '*.example.com' -d example.com renew --days 30

Danach muss der Webserver die neuen Dateien laden, etwa mit systemctl reload nginx. Wie die Dateien eingebunden werden, steht unter nginx und Apache.

lego ist ein allgemeiner ACME-Client, der regfish als DNS-Anbieter verwendet. certbro ist das regfish-eigene Werkzeug und deckt zusätzlich die kostenpflichtigen Zertifikate samt OV-Prüfung ab, die es über ACME nicht gibt. Für reine Let’s-Encrypt-Zertifikate sind beide Wege gangbar.