„Let's Encrypt ist eines der wichtigsten Projekte zum Schutz des freien und offenen Internets."
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:
- DuckDNS-Domain anlegen: Erstelle eine Subdomain bei DuckDNS (z.B.
mein-projekt.duckdns.org) und setze den A-Record auf deine lokale IP-Adresse. - Certbot installieren: Installiere Certbot, den offiziellen Client von Let's Encrypt, auf deinem System.
- Zertifikat beantragen: Fordere mit Certbot ein Zertifikat für deine DuckDNS-Subdomain an.
- 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.
- 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
# 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-duckdnsSchritt 3: DuckDNS-Token konfigurieren
Erstelle eine Konfigurationsdatei für deinen DuckDNS-Token:
echo "dns_duckdns_token=12345678-1234-1234-1234-123456789012" | sudo tee /etc/letsencrypt/duckdns.ini
sudo chmod 600 /etc/letsencrypt/duckdns.iniSchritt 4: SSL-Zertifikat erstellen
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.orgSchritt 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:
sudo certbot renew --dry-runFehlerbehebung
Falls du auf Probleme stößt:
- Überprüfe die DNS-Einträge mit
dig deine-domain.duckdns.org - Stelle sicher, dass dein DuckDNS-Token korrekt ist
- 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
sudo certbot certonly --manual --preferred-challenges dns -d deine-domain.duckdns.orgSchritt 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- Logge dich im DuckDNS-Webinterface ein
- Wähle deine Subdomain aus
- Füge einen neuen TXT-Record hinzu:
- Name:
_acme-challenge - Wert: Der von Certbot angezeigte Wert
- Name:
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.