Piehnat

Ein Blog. Wie früher. Nur heute.

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:

Voraussetzungen

Bevor du loslegst, stelle sicher, dass du Folgendes hast:

Schritt 1: Domainnamen besorgen

Option 1: Gekaufte Domain

Option 2: Kostenlose dynamische DNS-Dienste

Schritt 2: DNS-Einträge konfigurieren

Wildcard-Zertifikate (für mehrere Dienste)

*.deinedomain.com -> IP-Adresse deines Servers

Einzelne Subdomains

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

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

Fehlerbehebung

Egal ob mit Traefik oder Certbot, die Einrichtung wird nach etwas Übung zur Routine. Viel Erfolg.

Gebastelt

⬅ Vorheriger Beitrag
Web-Scraper mit Postgres bauen

Nächster Beitrag ➡
GPG Tutorial: E-Mails & Dateien sicher verschlüsseln und signieren