In der heutigen digitalen Welt ist Sicherheit essenziell. Wenn du deine eigenen Dienste hostest, solltest du diese unbedingt mit SSL-Zertifikaten absichern. Dieses Tutorial zeigt dir, wie du kostenlose SSL-Zertifikate von Let’s Encrypt einrichtest und deine Dienste sicher machst.
Warum SSL-Zertifikate unverzichtbar sind
SSL-Zertifikate bieten mehrere Vorteile, die deine Dienste sicherer und vertrauenswürdiger machen:
- Verschlüsselung: Sie schützen den Datenverkehr zwischen deinem Server und den Nutzern vor unbefugtem Zugriff.
- Identität: Sie bestätigen die Echtheit deines Servers.
- Vertrauen: Sie erhöhen das Vertrauen deiner Nutzer.
- Technische Anforderungen: Viele moderne Webtechnologien setzen SSL voraus.
Voraussetzungen
Bevor du loslegst, stelle sicher, dass du Folgendes hast:
- Einen eigenen Server (z. B. VPS oder dedizierten Server).
- Einen Domainnamen (kostenpflichtig oder über dynamische DNS-Dienste).
- Grundlegende Kenntnisse in der Serververwaltung.
Schritt 1: Domainnamen besorgen
Option 1: Gekaufte Domain
- Domains wie
.xyz
sind oft günstig. Achte jedoch darauf, dass einige Dienste wie E-Mail-Provider.xyz
-Domains blockieren können.
Option 2: Kostenlose dynamische DNS-Dienste
- Anbieter wie DuckDNS oder No-IP bieten kostenlose Subdomains an.
Schritt 2: DNS-Einträge konfigurieren
Wildcard-Zertifikate (für mehrere Dienste)
- Erstelle einen Wildcard-DNS-Eintrag:
*.deinedomain.com -> IP-Adresse deines Servers
Einzelne Subdomains
- Lege für jeden Dienst einen eigenen A-Record an:
meinservice.deinedomain.com -> IP-Adresse deines Servers
Stelle sicher, dass die DNS-Änderungen vor dem Abrufen der Zertifikate aktiv sind. Das kann je nach Provider einige Minuten bis Stunden dauern.
Schritt 3: Let’s Encrypt einrichten
Methode A: Traefik (empfohlen für mehrere Dienste)
Traefik ist ein leistungsfähiger Reverse Proxy, der Zertifikate automatisch verwaltet.
Docker-Setup
1. Erstelle eine docker-compose.yml
-Datei:
version: '3'
services:
traefik:
image: traefik:v2.5
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
- "--certificatesresolvers.myresolver.acme.email=deine@email.com"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./letsencrypt/acme.json:/letsencrypt/acme.json"
labels:
- "traefik.enable=true"
volumes:
letsencrypt:
2. Initialisiere die Zertifikatsdatei:
touch ./letsencrypt/acme.json
chmod 600 ./letsencrypt/acme.json
3. Starte Traefik:
docker-compose up -d
Labels für deine Dienste
Füge für jeden Dienst Labels hinzu:
labels:
- "traefik.enable=true"
- "traefik.http.routers.meinservice.rule=Host(`meinservice.deinedomain.com`)"
- "traefik.http.routers.meinservice.entrypoints=websecure"
- "traefik.http.routers.meinservice.tls.certresolver=myresolver"
Methode B: Certbot (für einzelne Dienste)
1. Certbot installieren:
sudo apt update
sudo apt install certbot
2. Zertifikat abrufen
sudo certbot certonly --standalone -d deinedomain.com
3. Automatische Erneuerung testen:
sudo certbot renew --dry-run
Schritt 4: Ports öffnen und Firewall konfigurieren
Erforderliche Ports
- Eingehend:
- Port 80 (HTTP) für die HTTP-01 Challenge.
- Port 443 (HTTPS) für den Zugriff auf deine Dienste.
- Ausgehend:
- Port 443 (HTTPS) für die Kommunikation mit Let’s Encrypt.
Hinweis: Nach der Zertifikatserneuerung kannst du Port 80 schließen, wenn du ihn nicht für andere Dienste benötigst.
Firewall-Regeln einrichten
Für ufw
:
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
Schritt 5: Automatische Erneuerung einrichten
Certbot
Certbot richtet automatisch einen Cronjob ein. Stelle sicher, dass alle abhängigen Dienste nach der Erneuerung neu geladen werden:
sudo certbot renew --post-hook "systemctl reload nginx"
Traefik
Traefik erneuert Zertifikate automatisch 30 Tage vor Ablauf. Du musst nichts weiter einrichten.
Zusätzliche Tipps
- DNS-01 Challenge: Für Wildcard-Zertifikate verwende DNS-Provider-APIs wie Cloudflare.
- OCSP Stapling: Aktiviere OCSP Stapling, um die Leistung deiner Website zu verbessern.
- ECDSA-Schlüssel: Für bessere Leistung und Sicherheit nutze ECDSA-Schlüssel (P-256 oder P-384).
Fehlerbehebung
- DNS-Validierung schlägt fehl: Warte einige Minuten und prüfe die DNS-Einträge erneut.
- Ports blockiert: Stelle sicher, dass keine anderen Dienste die benötigten Ports nutzen.
- Traefik-Probleme: Überprüfe die Rechte von
acme.json
und die Konfiguration.
Egal ob mit Traefik oder Certbot – die Einrichtung wird nach etwas Übung zur Routine. Viel Erfolg.