Guide – SSL-Zertifikate für selbst gehostete Dienste

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert