Piehnat
Piehnat
Veröffentlicht am
Bits

Guide – SSL-Zertifikate für selbst gehostete Dienste

Autor

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.

Hier gibt es keinen Kommentarbereich. Wenn du Fragen oder Anmerkungen zu diesem Post hast, schreib mir gern ne Mail oder blogge selbst dazu. Peace.