Dies ist die archivierte Version des Blogs vom 05.01.2017. Aktuelle Beiträge findest du unter thomas-leister.de
 

Im Manual Mode des Let’s Encrypt Referenzclients muss jede Domain über eine individuelle Datei im Unterverzeichnis /.well-known/acme-challenge/ derselben Domain bestätigt werden. Bei vielen Domains bremst das Wechseln zwischen den Verzeichnissen und das erstellen der notwendigen Verzeichnisstruktur den Arbeitsablauf. Damit die Domains schneller bestätigt werden können, sammle ich alle ACME Responses in einem gemeinsamen Verzeichnis /var/www/acme-challenges/. Egal, welche Domain gerade bestätigt werden soll: Die Datei zur Bestätigung wird hier abgelegt und steht dennoch unter der gewohnten URL bereit. Und so geht’s:

In meinem Nginx-Konfigurationsverzeichnis habe ich ein neues Verzeichnis „global“ angelegt und darin die Datei „letsencrypt-auth.conf“ erstellt:

mkdir /etc/nginx/global
nano /etc/nginx/global/letsencrypt-auth.conf

Inhalt der Konfigurationsdatei:

location /.well-known/acme-challenge {
    alias /var/www/acme-challenges;

    location ~ /.well-known/acme-challenge/(.*) {
        default_type text/plain;
    }
}

Das Verzeichnis /var/www/acme-challenges muss noch erstellt werden:

mkdir /var/www/acme-challenges

In den Server-Konfigurationsblöcken zu jeder Domain kann nun am Ende die letsencrypt-auth.conf eingebunden werden:

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    ...
    server_name thomas-leister.de www.thomas-leister.de;
    ...
    include global/letsencrypt-auth.conf;
}

… und das war’s auch schon! Jetzt noch Nginx neu laden und die Authentifizierungsdateien können gesammelt in nur einem Verzeichnis abgelegt werden.

Let’s Encrypt mit mehreren Hosts

Wer mehrere Hosts betreibt, kann sich auch damit die Arbeit vereinfachen: Alle ACME-Requests, die von Let’s Encrypt an .well-known/acme-challenge/ gestellt werden, sollen an eine einzige Adresse weitergeleitet werden. In meinem Beispiel ist das die Domain le-auth.domain.tld. Dort werden unter le-auth.domain.tld/.well-known/acme-challenge/ alle Bestätigungsdateien für Let’s Encrypt bereitgehalten. Alle virtual Hosts, für die ein Zertifikat ausgestellt werden soll, brauchen nur auf diese Adresse verweisen. Das letsencrypt-auth.conf Snippet von oben wird so abgewandelt:

location /.well-known/acme-challenge {
    location ~ /.well-known/acme-challenge/(.*) {
        return 301 http://le-auth.domain.tld$request_uri;
    }
}

Die Konfiguration von le-auth.domain.tld sieht dabei so aus:

server {
    listen 80;
    listen [::]:80;
    server_name le-auth.domain.tld;
    root /var/www/domain.tld/le-auth;
    default_type text/plain;
}

Im Root-Verzeichnis /var/www/domain.tld/le-auth der le-auth Subdomain befindet sich die gewohnte Ordnerstruktur .well-known/acme-challenge/, wo die Dateien für die Domainbestätigung aufbewahrt werden.

Fragt der Let’s Encrypt Server nun meinetolledomain.com/.well-known/acme-challenge/ an (angenommen, das Snippet wird für meinetolledomain.com verwendet), wird er an le-auth.domain.tld weitergeleitet, wo die Bestätigungsdatei bereitgestellt wird. So fasst man nicht nur mehrere Domains zusammen, sondern sogar mehrere Hosts. Alle Bestätigungsdateien müssen nur noch auf dem le-auth.domain.tld Host im .well-known/acme-challenge/ Verzeichnis abgelegt werden.


Post published on 7. Januar 2016 | Last updated on 9. Januar 2016
Tags:             

Diesen Blog unterstützen

Wenn Dir der Beitrag gefallen hat, freue ich mich über einen kleinen Obolus :-) Bitcoin QR Code

PayPal-Seite: https://www.paypal.me/ThomasLeister
Meine Bitcoin-Adresse: 15z8 QkNi dHsx q9WW d8nx W9XU hsdf Qe5B 4s

Siehe auch: Unterstützung

Informationen zum Autor

Thomas Leister

Geb. 1995, Kurzhaar-Metaller, Geek und Blogger. Nutzt seit Anfang 2013 ausschließlich Linux auf Desktop und Servern. Student der Automobilinformatik an der Hochschule für angewandte Wissenschaften in Landshut.

7 thoughts on “Let’s Encrypt ACME Challenge Responses sammeln [Nginx]

  • Warum nicht einfach einen Link in den ganzen webroot Verzeichnissen auf den globalen challenges Ordner erstellen?

  • Hallo Thomas,

    Du schreibst viele gute Anleitungen und hast mich in den letzten Wochen oft inspiriert, da ich derzeit zwei Server einrichte.

    Vielleicht kannst Du mir bei folgendem Problem helfen: http://stackoverflow.com/questions/35290318/letsencrypt-renewal-nginx-owncloud-config-failed-because-of-regular-expres

    Ich würde mich sehr freuen, wenn Du einmal rüber schaust. Es geht um einen location-block, der verhindert, dass das acme-challenge-Verzeichnis angezeigt werden kann.

  • Im Webroot-Modus vom letsencrypt-auto würde dieser die Dateien in /var/www/acme-challenges/.well-known/acme-challenge legen wenn /var/www/acme-challenges/ als webroot-path in der letsencrypt config angegeben ist.
    Da
    location /.well-known/acme-challenge {
    alias /var/www/acme-challenges;
    }
    aber direkt auf /var/www/acme-challenges/ verweist werden die Dateien nicht gefunden. Mit root wird der Pfad mitgegeben.

    location /.well-known/acme-challenge {
    root /var/www/acme-challenges;

    location ~ /.well-known/acme-challenge/(.*) {
    default_type text/plain;
    }
    }

    Mfg meti

  • Hallo, ich bin bei einem Webhoster, der das hier wohl abgelunzt hat. Er konnte mir auf folgende Frage keine Antwort geben.

    Ich frage wegen dem Folder .well-known, der während des Einrichtens von https in /var/www/virtual/xxx/html angelegt wurde.

    Im logfile zu letsencrypt findet sich was:
    /home/xxx/.local/share/letsencrypt/logs

    2016-04-11 07:32:30,475:INFO:letsencrypt.auth_handler:Cleaning up challenges
    2016-04-11 07:32:30,475:DEBUG:letsencrypt.plugins.webroot:Removing /var/www/virtual/xxx/html/.well-known/acme-challenge/xxx
    2016-04-11 07:32:30,476:DEBUG:letsencrypt.plugins.webroot:Removing /var/www/virtual/xxx/html/.well-known/acme-challenge/xxx
    2016-04-11 07:32:30,476:DEBUG:letsencrypt.plugins.webroot:Removing /var/www/virtual/xxx/html/.well-known/acme-challenge/xxx
    2016-04-11 07:32:30,477:DEBUG:letsencrypt.plugins.webroot:Removing /var/www/virtual/xxx/html/.well-known/acme-challenge/xxx
    2016-04-11 07:32:30,477:DEBUG:letsencrypt.plugins.webroot:All challenges cleaned up, removing /var/www/virtual/xxx/html/.well-known/acme-challenge

    [xxx = ausge-x’t]

    Das Script löscht also nur den Inhalt von .well-known, aber nicht .well-known selbst. Wird der Folder .well-known also noch benötigt? Für was?

    • .well-known wird nur für den Authentifizierungsvorgang an sich gebraucht und kann danach gelöscht werden. Beim nächsten Mal Zertifikate abholen sollte .well-known ja wieder angelegt werden. Ich gehe mal davon aus, dass du .well-known löschen kannst. Außer natürlich, .well-known wird bei deinem Hoster noch für andere Zwecke verwendet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.