Zurück zur Startseite

nine-manage-vhosts mit Let's Encrypt

  1. Einleitung
  2. Registration
  3. Zertifikate verwalten
    1. Zertifikat erstellen
    2. Zertifikat löschen
    3. Erneuerung

Einleitung

nine-manage-vhosts unterstützt die Verwaltung von Let’s Encrypt-Zertifikaten.

Registration

Um Zertifikate via Let’s Encrypt zu verwalten, müssen Sie sich pro Server einmalig bei Let’s Encrypt registrieren. Dies kann direkt auf der Kommandozeile vorgenommen werden:

www-data@server:~ $ sudo nine-manage-vhosts certificate register-client
--contact-email=meineemail@domain.ch

Ihre E-Mail-Adresse wird von Let’s Encrypt lediglich dafür verwendet, Sie über auslaufende Zertifikate zu informieren. Da nine-manage-vhosts so konfiguriert ist, Zertifikate automatisch zu erneuern, sollten Sie in der Regel keine E-Mails erhalten.

Zertifikate verwalten

Voraussetzungen

Folgende Voraussetzungen müssen erfüllt sein, damit das Erstellen von Zertifikaten funktioniert:

  • Alle im VHost enthaltenen Domains müssen DNS-Seitig auf den Server zeigen und existieren.
  • Das Webverzeichnis /pfad/zur/website/.well-known/acme-challenge muss für Apache/Nginx lesbar sein.

Um die Verfügbarkeit des Verzeichnis /pfad/zur/website/.well-known/acme-challenge zur Validierung sicher zu stellen, kann in der .htaccess-Datei die passende Einstellung gesetzt werden:

  • Bei Virtual Hosts mit “BasicAuth”:

    AuthType Basic
    AuthName "Password Protected Area" 
    AuthUserFile /path/to/.htpasswd
    Require expr %{REQUEST_URI} =~ m#^/.well-known/acme-challenge/#
    Require valid-user
    
  • Bei Virtual Hosts mit “RewriteRules”:
    (Am Beginn der .htaccess-Datei zu plazieren)

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/\.well\-known/acme\-challenge/
    RewriteRule (.*) - [L]
    
  • Bei Virtual Hosts mit “Allow From”:

    SetEnvIf Request_URI "^/.well-known/acme-challenge/" allowles
    Require env allowles
    

Die Konfiguration kann wie folgt getestet werden:

  • Im Verzeichnis /pfad/zur/website/.well-known/acme-challenge eine Text-Datei mit Inhalt anlegen. Sollte das Verzeichnis noch nicht bestehen, kann dies manuell angelegt werden.
  • Folgender Befehle ausführen, basierend auf Ihrer Domäne und Text-File:
curl http://your-domain.tld/.well-known/acme-challenge/test.txt
  • Wird der Inhalt der Datei ausgegeben, in diesem Fall der Datei test.txt, so funktioniert der Zugriff.

Zertifikat erstellen

Um ein Zertfikat für einen bestehenden VirtualHost zu erstellen, wird folgender Befehl benötigt:

www-data@server:~ $ sudo nine-manage-vhosts certificate create
--virtual-host=example.org

Die gewünschte Domain muss bereits mit einem A-Record oder CNAME auf den Server zeigen sowie auch jede Alias-Domains, die der VirtualHost besitzt. Sofern das Zertifikat ausgestellt werden kann, wird folgende Meldung angezeigt:

Certificate created: example.org (valid until: 2016-07-12)

Nun kann das ausgestellte Zertifikat mit dem Let’s Encrypt-Template auf einen VirtualHost angewendet werden:

www-data@server:~ $ sudo nine-manage-vhosts virtual-host update example.org
--template=default_letsencrypt_https

Jetzt sollte das Zertifikat aktiv sein. Die Verlängerung des Zertifikates passiert vollautomatisch. Sofern Sie bereits ein anderes Template verwenden, müssen wir dieses erst noch Let’s Encrypt-“fähig” machen. Sie können uns eine Mail an support@nine.ch mit dem gewünschten Template senden, dann passen wir das gerne für Sie an.

Zertifikat löschen

Um ein Zertifikate zu löschen, wird folgender Befehl benötigt:

www-data@server:~ $ sudo nine-manage-vhosts certificate remove
--virtual-host=example.org

Vor dem Löschen muss sichergestellt sein, dass das Zertifikat von keinem VirtualHost mehr verwendet wird. Dazu kann einfach das Template des entsprechenden VirtualHost auf eines ohne Let’s Encrypt geändert werden:

www-data@server:~ $ sudo nine-manage-vhosts virtual-host update example.org
--template=default

Erneuerung

Erstellte Zertifikate sind seitens Let’s Encrypt jeweils 90 Tage gültig. Um die Zertifikate zu erneuern, wird automatisch ein entsprechender Cronjob aktiviert. Diese prüft jede Nacht, ob es auslaufende Zertifikate gibt und erneuert diese wenn notwendig.

Da die Erneuerung nur funktioniert, wenn die Konfiguration (siehe “Zertifikat erstellen”) stimmt, kann diese unter Umständen nicht erfolgreich sein. In diesem Fall erhalten Sie von Let’s Encrypt vor Ablauf automatisch eine E-Mail.

Die Erneuerung von auslaufenden Zertifikaten kann auch manuell ausgelöst werden. Dafür wird folgender Befehl benötigt:

www-data@server:~ $ sudo nine-manage-vhosts certificate renew-expiring

Haben Sie die gewünschten Informationen nicht gefunden?

Kontaktieren Sie unseren Support:

+41 44 637 40 40 support@nine.ch