Let's Encrypt für lokale IP Adressen

16. Mai 2025
„Let's Encrypt ist eines der wichtigsten Projekte zum Schutz des freien und offenen Internets."
— Cory Doctorow

Let's Encrypt kann keine Zertifikate direkt für lokale IP-Adressen (wie 127.0.0.1 oder private IPs) ausstellen. Um ein gültiges SSL-Zertifikat zu erhalten, benötigst du einen Domainnamen. Mit einem kostenlosen Dienst wie DuckDNS kannst du dir jedoch eine Subdomain sichern, die auf deine lokale IP-Adresse zeigt – und für diese Subdomain ein Zertifikat von Let's Encrypt erhalten.

Besonders wichtig ist dies für iOS-Geräte, die keine unverschlüsselten Verbindungen zu Adressbuch- und Kalenderservern unterstützen. Selbst gehostete Dienste wie Nextcloud in deinem Heimnetzwerk können ohne gültiges SSL-Zertifikat nicht mit iOS-Geräten synchronisiert werden. Mit dieser Anleitung kannst du dieses Problem lösen und deine selbst gehosteten Dienste sicher mit allen Geräten nutzen.

So funktioniert es:

  1. DuckDNS-Domain anlegen: Erstelle eine Subdomain bei DuckDNS (z.B. mein-projekt.duckdns.org) und setze den A-Record auf deine lokale IP-Adresse.
  2. Certbot installieren: Installiere Certbot, den offiziellen Client von Let's Encrypt, auf deinem System.
  3. Zertifikat beantragen: Fordere mit Certbot ein Zertifikat für deine DuckDNS-Subdomain an.
  4. Domain-Validierung: Du musst eine Domain-Validierung (meist per DNS-01-Challenge) durchführen, um zu beweisen, dass du die Domain kontrollierst. Das geschieht durch das Anlegen eines speziellen TXT-Records im DuckDNS-Dashboard.
  5. Server konfigurieren: Installiere das Zertifikat auf deinem lokalen Server und konfiguriere deine Anwendung für HTTPS.

Voraussetzungen

  • Eine Domain, die bei DuckDNS verwaltet wird
  • SSH-Zugang zu deinem Server
  • Root- oder sudo-Rechte auf dem Server
  • Certbot installiert auf deinem Server

Schritt 1: DuckDNS-Token vorbereiten

Zuerst musst du deinen DuckDNS-Token bereithalten. Diesen findest du in deinem DuckDNS-Dashboard unter "Tokens". Der Token sieht etwa so aus: 12345678-1234-1234-1234-123456789012

Schritt 2: Certbot mit DuckDNS-Plugin installieren

bash
# Für Debian/Ubuntu
sudo apt update
sudo apt install certbot python3-certbot-dns-duckdns

# Für CentOS/RHEL
sudo dnf install certbot python3-certbot-dns-duckdns

Schritt 3: DuckDNS-Token konfigurieren

Erstelle eine Konfigurationsdatei für deinen DuckDNS-Token:

bash
echo "dns_duckdns_token=12345678-1234-1234-1234-123456789012" | sudo tee /etc/letsencrypt/duckdns.ini
sudo chmod 600 /etc/letsencrypt/duckdns.ini

Schritt 4: SSL-Zertifikat erstellen

bash
sudo certbot certonly --manual-public-ip-logging-ok \
  --preferred-challenges dns-01 \
  --manual \
  --manual-auth-hook /usr/lib/python3/dist-packages/certbot_dns_duckdns/_internal/duckdns.py \
  --manual-cleanup-hook /usr/lib/python3/dist-packages/certbot_dns_duckdns/_internal/duckdns.py \
  --manual-public-ip-logging-ok \
  -d deine-domain.duckdns.org

Schritt 5: Automatische Erneuerung einrichten

Die Zertifikate von Let's Encrypt sind 90 Tage gültig. Certbot richtet automatisch einen Cron-Job ein, der die Zertifikate vor Ablauf erneuert.

Du kannst die automatische Erneuerung testen mit:

bash
sudo certbot renew --dry-run

Fehlerbehebung

Falls du auf Probleme stößt:

  1. Überprüfe die DNS-Einträge mit dig deine-domain.duckdns.org
  2. Stelle sicher, dass dein DuckDNS-Token korrekt ist
  3. Prüfe die Certbot-Logs unter /var/log/letsencrypt/

Sicherheitshinweise

  • Bewahre deinen DuckDNS-Token sicher auf
  • Beschränke den Zugriff auf die Konfigurationsdateien
  • Führe regelmäßige Sicherheitsupdates durch
  • Überprüfe die Zertifikatserneuerung regelmäßig

Alternative: Manuelle DNS-01-Validierung ohne DuckDNS-Token

Wenn du keinen DuckDNS-Token verwenden möchtest oder kannst, bietet sich die manuelle DNS-01-Validierung an. Diese Methode erfordert mehr manuelle Schritte, funktioniert aber ohne Plugin und Token.

Schritt 1: Certbot mit manueller Validierung starten

bash
sudo certbot certonly --manual --preferred-challenges dns -d deine-domain.duckdns.org

Schritt 2: DNS-TXT-Record anlegen

Certbot wird dir einen DNS-TXT-Record anzeigen, den du im DuckDNS-Webinterface anlegen musst:

Bitte erstellen Sie einen DNS-TXT-Eintrag unter:
_acme-challenge.deine-domain.duckdns.org
mit dem Wert:
abcdef1234567890
  1. Logge dich im DuckDNS-Webinterface ein
  2. Wähle deine Subdomain aus
  3. Füge einen neuen TXT-Record hinzu:
    • Name: _acme-challenge
    • Wert: Der von Certbot angezeigte Wert

Schritt 3: Validierung bestätigen

Nachdem du den TXT-Record angelegt hast, warte einige Minuten, bis die DNS-Änderungen weltweit verfügbar sind. Dann bestätige im Certbot-Terminal mit Enter, dass der Record gesetzt ist.

Schritt 4: Zertifikat erhalten

Wenn die Validierung erfolgreich ist, erhältst du dein SSL-Zertifikat.

Fazit

Mit dieser Anleitung hast du nun ein sicheres SSL-Zertifikat für deine DuckDNS-Domain eingerichtet. Die Kombination aus Let's Encrypt und DuckDNS bietet eine kostenlose und sichere Lösung für HTTPS auf deiner Website.