Runbook: TLS einrichten

Dauer: ~15 Minuten
Rolle: Security-Admin
Voraussetzung: Zertifikat (PFX oder PEM+KEY)

HTTPS für das Data Gateway aktivieren.


Workflow

flowchart TD A[Start] --> B{Zertifikat vorhanden?} B -->|Nein| C[Zertifikat beschaffen] B -->|Ja| D[appsettings.json anpassen] C --> D D --> E[Gateway neustarten] E --> F[HTTPS testen] F --> G{Erfolgreich?} G -->|Ja| H[HTTP deaktivieren] G -->|Nein| I[Logs prüfen] H --> J[Fertig] style J fill:#e8f5e9 style I fill:#ffebee


1. Zertifikat beschaffen

Option A: Let's Encrypt (kostenlos)

# Certbot installieren
sudo apt install certbot
 
# Zertifikat anfordern
sudo certbot certonly --standalone -d gateway.example.com
 
# Ergebnis:
# /etc/letsencrypt/live/gateway.example.com/fullchain.pem
# /etc/letsencrypt/live/gateway.example.com/privkey.pem

Option B: Selbstsigniert (nur Test!)

# Selbstsigniertes Zertifikat erstellen
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes \
    -subj "/CN=gateway.example.com"
 
# In PFX konvertieren
openssl pkcs12 -export -out gateway.pfx -inkey key.pem -in cert.pem -passout pass:changeit

Option C: Interne CA

→ Siehe PQ Crypto: Zertifikat ausstellen


2. Zertifikat ablegen

# Windows
mkdir %GATEWAY_ROOT%\certs
copy gateway.pfx %GATEWAY_ROOT%\certs\
 
# Linux
sudo mkdir -p /opt/data-gateway/certs
sudo cp cert.pem key.pem /opt/data-gateway/certs/
sudo chmod 600 /opt/data-gateway/certs/*
sudo chown datagateway:datagateway /opt/data-gateway/certs/*

3. appsettings.json konfigurieren

Mit PFX-Datei:

{
  "Kestrel": {
    "Endpoints": {
      "Https": {
        "Url": "https://0.0.0.0:443",
        "Certificate": {
          "Path": "certs/gateway.pfx",
          "Password": "changeit"
        }
      }
    }
  }
}

Mit PEM-Dateien:

{
  "Kestrel": {
    "Endpoints": {
      "Https": {
        "Url": "https://0.0.0.0:443",
        "Certificate": {
          "Path": "certs/cert.pem",
          "KeyPath": "certs/key.pem"
        }
      }
    }
  }
}

TLS-Version erzwingen:

{
  "Kestrel": {
    "Endpoints": {
      "Https": {
        "Url": "https://0.0.0.0:443",
        "Certificate": {
          "Path": "certs/gateway.pfx",
          "Password": "changeit"
        },
        "SslProtocols": ["Tls12", "Tls13"]
      }
    }
  }
}

4. Gateway neustarten

# Windows
Restart-Service -Name "DataGateway"
 
# Linux
sudo systemctl restart data-gateway
 
# Docker
docker restart gateway

5. HTTPS testen

# Einfacher Test
curl -k https://localhost/health
 
# Mit Zertifikat-Prüfung
curl https://gateway.example.com/health
 
# TLS-Details anzeigen
curl -v https://gateway.example.com/health 2>&1 | grep -E "SSL|TLS|subject|expire"
 
# OpenSSL-Test
openssl s_client -connect gateway.example.com:443 -servername gateway.example.com

6. HTTP deaktivieren (optional)

Nur HTTPS erlauben:

{
  "Kestrel": {
    "Endpoints": {
      "Https": {
        "Url": "https://0.0.0.0:443",
        "Certificate": {
          "Path": "certs/gateway.pfx",
          "Password": "changeit"
        }
      }
    }
  }
}

Oder HTTP→HTTPS Redirect:

// Program.cs
app.UseHttpsRedirection();

7. Checkliste

# Prüfpunkt
———–
1 Zertifikat gültig (nicht abgelaufen)
2 Zertifikat für korrekten Hostnamen
3 Private Key geschützt (chmod 600)
4 HTTPS erreichbar
5 TLS 1.2+ aktiv
6 HTTP deaktiviert oder Redirect
7 Firewall Port 443 offen

Troubleshooting

Problem Ursache Lösung
————————–
Unable to configure HTTPS Falscher Pfad Zertifikat-Pfad prüfen
Password incorrect Falsches PFX-Passwort Passwort prüfen
Certificate expired Zertifikat abgelaufen Neues Zertifikat
SSL_ERROR_RX_RECORD_TOO_LONG HTTP statt HTTPS Port/Protocol prüfen
NET::ERR_CERT_COMMON_NAME_INVALID CN/SAN falsch Zertifikat mit richtigem Namen

SSL-Test online

Für öffentlich erreichbare Server:


Verwandte Runbooks


« ← Sicherheit | → Zertifikat erneuern »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional

Zuletzt geändert: den 29.01.2026 um 15:12