ISPConfig: Website-Einstellungen mit Kontrollkästchen für Let's Encrypt

ISPConfig: Zertifikate von Let’s Encrypt automatisch erstellen

Let’s Encrypt ist eine neue CA (Zertifizierungsstelle), die seit kurzem im Produktivbetrieb kostenlose TLS-Zertifikate vergibt.

Das ganze läuft automatisiert, die CA stellt dafür ein Script zur Verfügung, welches sämtliche Kommunikation mit den Servern von Let’s Encrypt regelt. Das Anfordern und erneuern von Zertifikaten ist also sehr einfach und mit einem Befehl über die Kommandozeile zu erledigen.

Für Hosting-Anbieter (oder Selbsthoster) ist Let’s Encrypt natürlich eine tolle Möglichkeit, die Webseiten schnell und kostenlos mit einem validen Zertifikat zu versehen. Für Anbieter mit dem Control Panel ISPConfig gibt es inzwischen eine externe Lösung, um die Zertifikatanforderung nahtlos in die Weboberfläche zu integrieren. Die externe Erweiterung soll eventuell in den nächsten Versionen von ISPConfig fester Teil der Software werden, bisher ist das aber noch nicht der Fall, das Panel muss also gepatcht werden.

Die Erweiterung von alexalouit ist auf github zu finden und kann unter Debian leicht installiert werden. Vorher muss allerdings das Script von Let’s Encrypt installiert werden, ebenfalls von github:

cd /tmp
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto

Der Installer kann abgebrochen werden, bevor er beim Anfordern von Zertifikaten hilft, das wollen wir schließlich über ISPConfig erledigen.

Nun wird „ISPConfig-letsencrypt“ geklont:

cd /tmp
git clone https://github.com/alexalouit/ISPConfig-letsencrypt.git
cd ISPConfig-letsencrypt

Auch hier gibt es einen automatischen Installer, der die Erweiterung installiert und ISPConfig patcht (Dateien verschieben, Datenbank aktualisieren und Konfiguration anpassen):

root@helium:/tmp/ISPConfig-letsencrypt# php -q install.php
Create backup on /var/backup/ directory
/bin/tar: Entferne führende „/“ von Elementnamen
Backup finished
Copy Let's Encrypt configuration.
Start MySQL update..
Configure Apache and reload it.
Create backup cronjob on /var/backup/ directory
Add a cronjob for renewal certs
And finally, update ISPConfig.
Done my job. Enjoy!

Ist dies erledigt, erscheint in ISPConfig in den Einstellungen einer Website neben dem bisher vorhandenen Kontrollkästchen „SSL“ auch das Kontrollkästchen „Let’s Encrypt“:

ISPConfig: Website-Einstellungen mit Kontrollkästchen für Let's Encrypt
ISPConfig: Website-Einstellungen mit Kontrollkästchen für Let’s Encrypt

Setzt man diesen Haken (der Haken bei SSL setzt sich dann automatisch), wird bei der Aktion „Zertifikat Erstellen“ im Tab „SSL“ nicht mehr ein selbstsigniertes Zertifikat auf dem Server generiert, sondern es wird eines bei Let’s Encrypt angefordert. wird automatisch ein Zertifikat von Let’s Encrypt angefordert und die Seite damit ausgestattet. Im SSL-Tab muss und darf nichts weiter getan werden.

Mehr ist gar nicht notwendig, nach kurzer Zeit ist das Zertifikat im Ordner von Let’s Encrypt hinterlegt und wird in den SSL-Ordner der Seite gelinkt. Auch die Änderungen in den vhosts werden automatisch vorgenommen. Die Seite ist nun über https abrufbar und das Zertifikat wird von den meisten vernünftigen Browsern als vertrauenswürdig angezeigt:

Website mit dem über ISPConfig abgerufenen Let's Encrypt Zertifikat
Website mit dem über ISPConfig abgerufenen Let’s Encrypt Zertifikat

22 Gedanken zu „ISPConfig: Zertifikate von Let’s Encrypt automatisch erstellen“

  1. Hallo,

    tolle Beschreibung. Vielen Dank dafür!

    Du schreibst „Auch die Änderungen in den vhosts werden automatisch vorgenommen.“. Das kann ich nicht bestätigen. Vielleicht mache ich auch was falsch. Was meinst du damit denn genau? Werden für alle Subdomains automatisch die Zertifikate ausgestellt?

    Wenn nicht, wie kann man diese erstellen? In den vHost-Optionen ist keine LetsEncrypt-Option vorhanden.

    Noch eine Frage: Werden die Zertifikate automatisch aktualisiert?

    Gruß,
    Sören

    1. Automatisch wird nur für genau eine Domain ein Zertifikat ausgestellt. Und für diese wird auch der vhost geändert (sollte zumindest so sein).

      Für Subdomains kannst du beispielsweise eine eigene Seite anlegen und dort ein neues Zertifikat anfordern. Ist aber noch etwas holprig aktuell.

      Schau mal in der crontab (in der Konsole crontab -l eingeben), ob ein letsencrypt renew eingetragen ist. Das wäre die automatische Aktualisierung der Zertifikate.

      1. Ich habe die Subdomains nun als eigene Seiten angelegt und es funktioniert einwandfrei.

        Vielen Dank nochmal für deine Anleitung und Hilfe!

  2. Ich stelle gerade fest, dass kein Zertifikat für eine Subdomain erstellt wird, wenn bereits für die Hauptdomain ein Zertifikat existiert. Wenn ich zuerst für z.B. „domain.com“ ein Zertifikat erstellt habe, dann kann ich danach keines mehr für „sub.domain.com“ erstellen…

    1. Ja, das Problem konnte ich auch schon feststellen. Ist auch dann ärgerlich, wenn man zuerst für test.example.com ein Cert ausstellt und danach für example.com. Beim renew funktioniert in diesem Fall die Authentifizierung nicht mehr, weil auch für test.example.com das Token für example.com erwartet wird, was das Plugin aber nicht ausliefert.

  3. moin,

    ich habe das problem, das 3 Domains ein Zertifikat erhalten haben von Let´s Encrypt und bei der 4. Domain sich gar nix mehr rührt, bzw nix mehr erstellt wird.
    Wie könnte man dies beheben??

    1. Hallo Janek, dreh dir das Loglevel hoch, so dass die Fehlermeldung von ISPConfig beim Ausführen des Jobs sehen kannst. Dort wirst du auch ggfs. das Kommando für Letsencrypt sehen. Das kannst du dann mal manuell ausführen und wirst sehen, wo es hakt.

    2. ISPConfig schreibt diese Dinge normalerweise in ein Logfile, da müsstest du mal rein schauen. Ich würde jetzt raten und sagen, dass du eventuell wegen zu vieler Anfragen gebannt wurdest, das kann passieren. Sollte allerdings eigentlich nicht so schnell geschehen. Wie Dave schon schrieb, wenn du das Loglevel erhöhst, bekommst du detailliertere Fehlermeldungen und Hinweise.

  4. Ich könnte die Ursache noch nicht verifizieren, aber ich vermute, dass folgendes Problem mit dem hier beschriebenen Update von ISPConfig zusammenhängt.

    Ich habe ownCloud installiert (nginx) , bekomme aber seit dem Update nach dem Login einen 404 error. Auf einem identisch konfigurierten Server ohne dieses Update besteht das Problem nicht.

    Kann das jemand bestätigen? Kann mir jemand einen Tipp geben, was ich außer der Config von nginx, vHost und php-fpm noch prüfen sollte?

    1. Ich habe das Problem gefunden. In der Datei /etc/php5/fpm/pool.d/www.conf musste ich den Eintrag „listen = /var/run/php5-fpm.sock“ in „listen = 127.0.0.1:9000“ ändern. Nach einem Neustart des Dienstes php5-fpm lief alles wieder.

  5. Funktioniert diese Lösung auch für ISP Config selbst? Da habe ich beim Installieren gemäß Anleitung ein selbst erzeugtes Zertifikat hinterlegt, was natürlich bei allen Browsern erst mal als „böse“ eingestuft wird.

    Nun taucht natürlich die Subdomain des Servers (server.example.de) nicht als Webseite im ISP Config auf. Wie geht man da vor?

    1. Nein, für die Oberfläche selbst kannst du das nicht auf dem Wege anlegen, es gibt aber viele Anleitungen zur Erzeugung eines Zertifikats über den Letsencrypt-Client, den du ja eh schon installiert hast.

  6. Hallo! Ich verwende auch das Plugin von alexaloit, welches soweit ganz komfortabel funktioniert. Nur habe ich das Problem, dass wenn ich bei den Einstellungen im ISPonfig3 (z.B. Optionen oder Backup) was verändere, der Website ein falsches Zertifikat (von einer anderen Website) zugeordnet wird. Wenn ich dann SSL und Let’s Encrypt deaktiviere und dann wieder aktiviere, dann passt wieder alles.

    Hat da jemand eine Lösung dazu?
    LG, Roland

  7. Hi, erstmal Danke!
    Ich hab das bei mir so nachvollzogen, wie du es empfohlen hast.
    Allerdings hatte ich übersehen, dass deine Lösung nur für den Apache taugt? Ich verwende Debian/ISPConfig/NGINX(ohne Apache).
    Hast du da auch einen Tipp?

    Unabhängig davon: Wenn es grundsätzlich funktionieren sollte, sind die SSL-Zertifikate dann unter ->Webseiten->xyz.de (Domain) unter dem SSL-Reiter eingetragen?

    1. Hi Mario,

      das sollte auch unter NGINX funktionieren, auf der Seite des Plugins jedenfalls gibt es eine Anleitung für NGINX. Möglicherweise ist dieser Fall nur im Autoinstaller nicht vorgesehen?

      Nein, in diesem Reiter wird nichts angezeigt. Die Zertifikate werden auf dem Server gespeichert (/etc/letsencrypt/ usw.) und ins Verzeichnis /ssl einer jeden Seite verlinkt. Das Plugin passt selbstständig die Config der Seite an.

  8. Ein super Patch – Wenn er denn funktionieren würde 🙂

    Es wird leider kein Cert erstellt, im Log steht auch keinerlei Fehlermeldung. Allerdings ist das Verzeichnis /.well-known/ nicht erreichbar. Hier bekomme ich ein 403 Forbidden.

    Die NGINX Config wurde gepatcht, der Zugriff sollte also eigentlich möglich sein.

    Hast du noch einen Tip, woran es liegen könnte?

    1. Ich habe keinen Server mit NGINX-Umgebung, kann dazu also nichts konkretes sagen.

      Das Verzeichnis wird allerdings soweit ich weiß während der Prüfung erstellt und dann gelöscht.
      Was zu beachten ist: Wenn du Subdomains im vhost konfiguriert hast (www?), müssen diese auch erreichbar sein. Den Fehler habe ich anfangs auch gemacht.

  9. Toller Artikel, bei mir hat alles geklappt.

    Ich habe allerdings nur letsencrypt nachinstalliert , da mein ISPConfig bereits auf Version 3.1.1 läuft.
    Für eine Domain habe ich „Let’s Encrypt SSL“ ausgewählt und es wurde ein Zertifikat für meine Subdomain erstellt. (Vermutlich, weil ich in dem Reiter „SSL“ meine Subdomain vorher festgelegt hatte.

    Gruß,
    Dustin

    1. Ja, mit der neuen Version onc ISPConfig ist ja der Patch nicht mehr notwendig, weil er als Modul in die Software eingeflossen ist.

      Ich glaube, die Einstellungen im Reiter „SSL“ werden ignoriert, wenn letsencrypt aktiviert ist. Was war denn die Subdomain?

Schreibe einen Kommentar

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