NGINX führt native Unterstützung für das ACME-Protokoll ein
(blog.nginx.org)- NGINX hat eine Preview-Version veröffentlicht, die das ACME-Protokoll nativ unterstützt und damit die Ausstellung und Erneuerung von SSL/TLS-Zertifikaten automatisiert
- Über das neue Rust-basierte Modul
ngx_http_acme_modulekönnen Zertifikate direkt über die NGINX-Konfiguration angefordert, installiert und erneuert werden, ganz ohne externe Tools - Dadurch sinkt die Abhängigkeit von externen Tools wie Certbot, während Sicherheit und Plattformunabhängigkeit steigen
- Die erste Version unterstützt die HTTP-01-Challenge; Unterstützung für TLS-ALPN und DNS-01 ist für später geplant
- Die ACME-Unterstützung dürfte nicht nur im Web, sondern auch für die Sicherheitsautomatisierung in IoT- und Edge-Computing-Umgebungen eine wichtige Rolle spielen
Überblick und wichtigste Änderungen
- NGINX hat eine Preview-Version der ACME-Protokollunterstützung veröffentlicht
- Mit dem neuen Modul
ngx_http_acme_moduleist es so konzipiert, dass Zertifikatsanforderung, Installation und Erneuerung direkt in der NGINX-Konfiguration verarbeitet werden können - Diese ACME-Unterstützung nutzt intern das NGINX-Rust SDK und wird als Rust-basiertes dynamisches Modul bereitgestellt
- Sowohl Open-Source-Nutzer als auch Unternehmenskunden von NGINX Plus können diese Funktion verwenden
- Durch die geringere Abhängigkeit von externen Tools wie Certbot steigen Sicherheit und Effizienz des Zertifikatsmanagements
Einführung in das ACME-Protokoll
- Das ACME(Automated Certificate Management Environment)-Protokoll ist ein Kommunikationsprotokoll zur Automatisierung von Ausstellung, Verifizierung, Erneuerung und Widerruf von SSL/TLS-Zertifikaten
- Clients können den Zertifikatslebenszyklus durch automatisierte Kommunikation mit einer CA(Certificate Authority) direkt verwalten, ohne manuelle Zwischenschritte
- Es wurde 2015 von der Internet Security Research Group(ISRG) im Rahmen des Projekts Let’s Encrypt entwickelt und veröffentlicht
- Vor dem Aufkommen von ACME war der Prozess der Zertifikatsausstellung manuell und mit höheren Kosten sowie größerer Fehleranfälligkeit verbunden
- Das aktuelle ACMEv2 erweitert den Funktionsumfang unter anderem um Authentifizierungsmethoden und Wildcard-Unterstützung und erhöht damit Flexibilität und Sicherheit
Ablauf der ACME-basierten Zertifikatsautomatisierung in NGINX
- Die Automatisierung des Zertifikatslebenszyklus mit dem ACME-Protokoll in NGINX erfolgt in den folgenden vier Schritten
-
1. ACME-Server konfigurieren
- Zur Aktivierung der ACME-Funktion muss mit
acme_issuerzwingend die Directory-URL des ACME-Servers angegeben werden - Bei der Zertifikatsausstellung können optional auch Kontaktinformationen des Clients, Speicherpfade für Statusdaten und weitere Angaben definiert werden
- Zur Aktivierung der ACME-Funktion muss mit
-
2. Gemeinsamen Speicher (Zone) zuweisen
- Mit
acme_shared_zonekann zusätzlich eine Shared-Memory-Zone für die Speicherung von Zertifikaten, privaten Schlüsseln und Challenge-Daten konfiguriert werden - Die Standardgröße beträgt 256K und kann bei Bedarf erweitert werden
- Mit
-
3. Challenge konfigurieren
- Die aktuelle Preview-Version unterstützt nur die HTTP-01-Challenge, die zur Verifizierung des Domain-Besitzes dient
- Dafür müssen in der NGINX-Konfiguration ein Listener auf Port 80 sowie eine Standard-404-Antwort definiert werden
- Unterstützung für TLS-ALPN- und DNS-01-Challenges ist für die Zukunft geplant
-
4. Zertifikate ausstellen und erneuern
- Wird die Direktive
acme_certificatezum Server-Block hinzugefügt, kann die Ausstellung/Erneuerung von TLS-Zertifikaten für die jeweilige Domain automatisiert werden - Die Ziel-Domain für die Zertifikatsausstellung wird in der Regel mit
server_nameangegeben - Reguläre Ausdrücke und Wildcards in
server_namewerden in der Preview-Version nicht unterstützt - Über die Modulvariablen
$acme_certificateund$acme_certificate_keywerden Zertifikat und Schlüssel automatisch verknüpft
- Wird die Direktive
Wichtigste Vorteile
- Das ACME-Protokoll steht im Zentrum des weltweiten starken Wachstums von HTTPS
- Durch automatisiertes Zertifikatsmanagement sinken Kosten für das Zertifikatslebenszyklus-Management und Fehler durch manuelle Arbeit deutlich
- Der Verzicht auf externe Tools reduziert die Angriffsfläche und verbessert die Portabilität
- Fördert die Standardisierung von Sicherheit in unterschiedlichsten Umgebungen
Ausblick
- Unterstützung für TLS-ALPN- und DNS-01-Challenges ist geplant
- Funktionsausbau auf Basis von Nutzerfeedback
- Mit der breiteren Einführung von IoT, API und Edge Computing dürfte ACME künftig eine Schlüsselrolle in einem noch größeren Spektrum automatisierter Sicherheitsinfrastrukturen übernehmen
- Die native ACME-Unterstützung von NGINX dürfte als Grundlage dafür dienen, Websicherheit, Automatisierung und Skalierbarkeit zum künftigen Standard zu machen
Erste Schritte
- Open-Source-Nutzer können vorgefertigte Module über die NGINX Linux packages verwenden
- Unternehmenskunden von NGINX Plus erhalten die Funktion als von F5 unterstütztes dynamisches Modul
- Die Moduldokumentation findet sich in den NGINX Docs
1 Kommentare
Hacker-News-Kommentare
DNS-01 wäre für nginx-Nutzer, die nicht öffentlich erreichbar sind, eine deutlich sinnvollere Funktion (z. B. bei Nutzung von Nginx Proxy Manager). DNS-01 aktualisiert einfach nur Records, deshalb fand ich das immer die sauberste Lösung. Ich warte wirklich darauf, dass diese Funktion kommt.
Caddy ist definitiv einfacher als nginx. Es bietet Templates für verschiedenste Services, Tests und Sonderdienste für Bildungseinrichtungen, besseres Logging, für mich perfekte Zertifikatsverwaltung und bessere Metriken.
Allerdings arbeite ich mich noch in die Plugins ein; Caddy hat kein Rate Limiting, und wegen eines Bugs in Power BI fordert ein bestimmter Nutzer Bilder 300.000-mal pro Tag an, was unpraktisch ist.
Allerdings wird es noch eine ganze Weile dauern, bis diese Funktion in den Stable-Repositories von Ubuntu oder Debian landet.
Außerdem werden DNS-Challenges (Wildcard-Zertifikate) noch nicht unterstützt, daher hilft das Dokku kurzfristig vermutlich nicht besonders.
Ich habe Dokku ausprobiert (und versuche es immer noch), aber die Einstiegshürde wirkte ziemlich hoch.
Coolify konnte zum Beispiel nach dem Erstellen einer GitHub-App sofort Deployments integrieren, und ich habe auch Erfahrung damit, Container per GH Actions zu bauen und auszurollen.
Die offizielle Dokku-Dokumentation fühlt sich eher wie ein Nachschlagewerk an, fast wie das Lesen einer Enzyklopädie: offizielle Dokku-Doku zur Git-Initialisierung
Ich finde eine direkte, sofort hilfreiche Einführung wie bei Coolify nützlicher: Hilfe zur GitHub-Integration bei Coolify
Ich fände es gut, wenn es für Dokku ein Tutorial zur Installation populärer OSS-Apps gäbe, einen Einstiegsleitfaden mit schrittweisen Zielen und Erfolgen und ein Tutorial, das in einer Bare-Metal-Umgebung Reverse Proxy und mehrere populäre Apps zusammen behandelt.
Letztlich nutzt man Dokku nicht um Dokku willen, sondern um mit Dokku schnell und einfach den "gewünschten Zustand" zu erreichen.
Am Ende wünsche ich mir einen reibungslosen Prozess, bei dem ich einfach auf ein passendes Repository klicke und es sofort auf meiner Maschine deployt wird. Danach würde ich gern in die Details des Unterbaus eintauchen.
Bei Software ohne offizielles Release v1.0.0 kann sich die Schnittstelle jederzeit ohne Vorwarnung ändern. Major-Version 0 wird irgendwann zur Falle.
Ich würde empfehlen, die Maintainer zu stabilen Releases zu drängen.
dehydrated ist seit 7 Jahren noch auf Major-Version 0.
0ver.org ist ebenfalls einen Blick wert:
Dahinter steht eine Versionierungsphilosophie nach dem Motto: "Wenn es in Produktion genutzt wird, sollte es bereits 1.0.0 sein."
Mehr dazu hier.
ngx_http_acme_modulewurde in mehrere Linux-Distributionspakete aufgenommen, aber Debian stable fehlt noch.Laut der offiziellen nginx-Paketliste sind oldstable/oldoldstable vorhanden, aber Debian 13 Trixie, das vor 4 Tagen veröffentlicht wurde, fehlt.
Was Caddy und Traefik schon vor 5 Jahren gemacht haben, unterstützt nginx jetzt erst.
Trotzdem ist das natürlich eine gute Veränderung. Jetzt muss man certbot nicht mehr selbst ausführen, was praktischer ist.
nginx führt diese Funktion also mit fast 9 bis 10 Jahren Verspätung ein.
Ich fand die Unix-Philosophie, eine Sache gut zu machen und sich mit anderen Tools kombinieren zu lassen, immer besser.
Ein "Tool", das alles können will, wird zwangsläufig irgendwo Defizite haben.
Selbst wenn certbot die automatische Konfiguration versucht, funktioniert das außerhalb der meisten Standardumgebungen nicht besonders gut.
Wenn nginx alles intern direkt erledigt, wirkt das eher wie die bessere Lösung.
Ich frage mich auch, ob damit der Weg frei wird, neben Let's Encrypt auch einfach Alternativen zu nutzen.
Caddy ist mit seinen vielen sofort nutzbaren Komfortfunktionen wirklich praktisch.
Persönlich konnte ich nicht vollständig zu Caddy wechseln, weil ich die Rate-Limiting- und Geo-Module von nginx brauche.