OpenWrt: Zentraler Reverse Proxy & Wildcard-Zertifikat (Nginx + acme.sh)

Diese Dokumentation beschreibt die Einrichtung eines zentralen HTTPS-Gateways auf OpenWrt unter Verwendung eines Let's Encrypt Wildcard-Zertifikats via acme.sh und dns_desec, der Ablösung von uhttpd sowie der nativen Integration von Nginx für LuCI und lokale Heimnetz-Dienste.

1. Voraussetzungen & Wildcard-Zertifikat (acme.sh)

Das Wildcard-Zertifikat deckt die Hauptdomain und alle Subdomains ab (z. B. home.EXAMPLE.TLD und *.home.EXAMPLE.TLD).

  • DNS-Provider: deSEC.io (API-Token für acme.sh hinterlegt)
  • Zertifikatspfad: /etc/ssl/nginx/

Ausstellung des Zertifikats auf der Konsole:

acme.sh --issue --dns dns_desec \
  -d home.EXAMPLE.TLD \
  -d '*.home.EXAMPLE.TLD' \
  --keylength ec-256

Installation und Ablage der Zertifikate in /etc/ssl/nginx/:

acme.sh --install-cert -d home.EXAMPLE.TLD \
  --fullchain-file /etc/ssl/nginx/home.EXAMPLE.TLD.fullchain.crt \
  --key-file /etc/ssl/nginx/home.EXAMPLE.TLD.key

2. uhttpd komplett deaktivieren

Da Nginx als alleiniger Webserver auf den Ports 80 und 443 agieren soll, wird der Standard-Webserver uhttpd abgeschaltet:

/etc/init.d/uhttpd stop
/etc/init.d/uhttpd disable

3. Nginx für LuCI einrichten (luci-nginx)

Damit Nginx die LuCI-Oberfläche verarbeiten kann, wird das entsprechende Paket installiert (liefert die benötigten .locations-Dateien):


apk add luci-nginx

4. Nginx-Konfiguration (/etc/config/nginx)

Die zentrale Konfigurationsdatei wird um den Server-Block für die Heimnetz-Domain erweitert.

Beispiel: Router-Interface (LuCI) unter home.EXAMPLE.TLD

Öffne die Datei:

micro /etc/config/nginx

Füge folgenden Server-Block hinzu:

config server 'home'
    option server_name 'home.EXAMPLE.TLD *.home.EXAMPLE.TLD'
    list listen '443 ssl'
    list listen '[::]:443 ssl'
    option root '/www'
    option ssl_certificate '/etc/ssl/nginx/home.EXAMPLE.TLD.fullchain.crt'
    option ssl_certificate_key '/etc/ssl/nginx/home.EXAMPLE.TLD.key'

    list include 'restrict_locally'
    list include 'conf.d/*.locations'

Konfiguration testen und Nginx neu starten:

nginx -t -c /etc/nginx/uci.conf
/etc/init.d/nginx restart

5. Weitere Heimnetz-Dienste via Wildcard & Reverse Proxy einbinden

Um zusätzliche Geräte im Heimnetz (z. B. NAS, Home Assistant) über Subdomains abzusichern:

  1. NextDNS Rewrite Rule anlegen:

    • Subdomain eintragen (z. B. ha.home.EXAMPLE.TLD $\rightarrow$ 10.133.7.1).
  2. Nginx Server-Block in /etc/config/nginx ergänzen:

    config server 'ha'
    option server_name 'ha.home.EXAMPLE.TLD'
    list listen '443 ssl'
    list listen '[::]:443 ssl'
    option ssl_certificate '/etc/ssl/nginx/home.EXAMPLE.TLD.fullchain.crt'
    option ssl_certificate_key '/etc/ssl/nginx/home.EXAMPLE.TLD.key'
    
    list location '/ { proxy_pass http://10.133.8.59:80; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }'
  3. Nginx neu laden:

    /etc/init.d/nginx restart