nginx Let's-Encrypt-Authentifizierung für Reverse-Proxy-Sites

English Deutsch

Problem:

Du hast einen nginx-Host, der als reiner Reverse-Proxy konfiguriert ist wie dieser:

reverse_proxy.conf
server {
    server_name  my.domain;
    [...]
    location / {
        proxy_pass http://localhost:1234;
    }
}

Für diesen Host möchtest du Let’s Encrypt verwenden, um automatisch ein Zertifikat mit der Webroot-Methode auszustellen wie folgt:

certbot_command.sh
certbot certonly -a webroot --webroot-path ??? -d my.domain

Der reverse-proxyte Webserver bietet kein Webroot-Verzeichnis für den automatisierten Authentifizierungsprozess und du möchtest die Flexibilität behalten, das Zertifikat jederzeit zu aktualisieren, ohne die nginx-Konfiguration manuell zu ändern.

Lösung

Let’s Encrypt verwendet das /.well-known-Verzeichnis zur Kommunikation mit dem ACME-Server. Das bedeutet, dass du nur zwei einfache Schritte ausführen musst:

Angenommen, du hast das Webroot-Verzeichnis in /var/my.domain.webroot erstellt, kannst du diesen Konfigurationsblock innerhalb des server-Blocks verwenden:

well_known_location.conf
location /.well-known {
    root /var/my.domain.webroot;
}

Starte dann nginx neu und verwende Let’s Encrypt wie folgt:

certbot_webroot.sh
certbot certonly -a webroot --webroot-path /var/my.domain.webroot -d my.domain

Du kannst das Webroot-Verzeichnis mit anderen Domains teilen.


Check out similar posts by category: Linux, Nginx