TLS-Konfiguration
Diese Anleitung erklärt alle TLS-Konfigurationsoptionen in ReadyStackGo - von selbstsignierten Zertifikaten über eigene Zertifikate bis hin zu Let’s Encrypt und Reverse Proxy-Szenarien.
Übersicht
Abschnitt betitelt „Übersicht“ReadyStackGo unterstützt verschiedene TLS/HTTPS-Konfigurationen:
| Option | Verwendung | Komplexität |
|---|---|---|
| Selbstsigniert | Entwicklung, Tests, internes Netzwerk | Keine Konfiguration nötig |
| Eigenes Zertifikat | Firmen-CA, gekaufte Zertifikate | Datei-Upload |
| Let’s Encrypt | Produktionsumgebungen mit öffentlicher Domain | Domain-Validierung |
| Reverse Proxy | Hinter nginx, Traefik, HAProxy, etc. | Proxy-abhängig |
Alle Einstellungen befinden sich unter Settings → TLS / Certificates in der Web UI.
Selbstsigniertes Zertifikat
Abschnitt betitelt „Selbstsigniertes Zertifikat“Was ist ein selbstsigniertes Zertifikat?
Abschnitt betitelt „Was ist ein selbstsigniertes Zertifikat?“Ein selbstsigniertes Zertifikat wird von ReadyStackGo beim ersten Start automatisch generiert. Es verschlüsselt die Verbindung, wird aber nicht von einer vertrauenswürdigen Zertifizierungsstelle (CA) signiert. Browser zeigen daher eine Sicherheitswarnung an.
Wann verwenden?
Abschnitt betitelt „Wann verwenden?“- Lokale Entwicklung - Verschlüsselung ohne CA-Setup
- Interne Testsysteme - Wenn Sicherheitswarnungen akzeptabel sind
- Docker-Entwicklung - Schneller Start ohne Zertifikatskonfiguration
Funktionsweise
Abschnitt betitelt „Funktionsweise“- Beim ersten Start prüft ReadyStackGo, ob ein Zertifikat existiert
- Falls nicht, wird automatisch ein selbstsigniertes Zertifikat generiert
- Das Zertifikat wird unter
/app/config/tls/selfsigned.pfxgespeichert - Gültigkeitsdauer: 365 Tage
Zurück zum selbstsignierten Zertifikat
Abschnitt betitelt „Zurück zum selbstsignierten Zertifikat“Falls du ein eigenes Zertifikat hochgeladen hast und zurück zum selbstsignierten wechseln möchtest:
- Navigiere zu Settings → TLS / Certificates
- Klicke auf Configure Certificate
- Wähle Reset to Self-Signed
- Bestätige die Aktion
- Starte ReadyStackGo neu, um das neue Zertifikat zu laden
Eigenes Zertifikat
Abschnitt betitelt „Eigenes Zertifikat“Wann verwenden?
Abschnitt betitelt „Wann verwenden?“- Firmen-CA - Interne Zertifizierungsstelle
- Gekaufte Zertifikate - Von einer öffentlichen CA (DigiCert, Comodo, etc.)
- Wildcard-Zertifikate - Ein Zertifikat für mehrere Subdomains
Unterstützte Formate
Abschnitt betitelt „Unterstützte Formate“ReadyStackGo akzeptiert zwei Zertifikatsformate:
| Format | Dateien | Typische Quelle |
|---|---|---|
| PFX/PKCS#12 | Eine .pfx/.p12 Datei mit Passwort | Windows-Export, IIS |
| PEM | Separate Zertifikat- und Schlüssel-Datei | Linux, OpenSSL, Let’s Encrypt |
Schritt-für-Schritt: PFX-Zertifikat hochladen
Abschnitt betitelt „Schritt-für-Schritt: PFX-Zertifikat hochladen“- Navigiere zu Settings → TLS / Certificates
- Klicke auf Configure Certificate
- Wähle Upload PFX Certificate
- Wähle die .pfx-Datei aus
- Gib das Passwort ein (falls vorhanden)
- Klicke auf Upload
- Starte ReadyStackGo neu
Schritt-für-Schritt: PEM-Zertifikat hochladen
Abschnitt betitelt „Schritt-für-Schritt: PEM-Zertifikat hochladen“- Navigiere zu Settings → TLS / Certificates
- Klicke auf Configure Certificate
- Wähle Upload PEM Certificate
- Füge den Inhalt der Zertifikatsdatei ein (beginnt mit
-----BEGIN CERTIFICATE-----) - Füge den Inhalt der Schlüsseldatei ein (beginnt mit
-----BEGIN PRIVATE KEY-----oder-----BEGIN RSA PRIVATE KEY-----) - Klicke auf Upload
- Starte ReadyStackGo neu
Zertifikat mit OpenSSL erstellen
Abschnitt betitelt „Zertifikat mit OpenSSL erstellen“Falls du ein selbstsigniertes Zertifikat mit längerer Gültigkeit oder spezifischen Einstellungen benötigst:
# Schlüssel und Zertifikat generieren (10 Jahre gültig)openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 3650 -nodes \ -subj "/CN=readystackgo.local"
# Zu PFX konvertieren (optional)openssl pkcs12 -export -out certificate.pfx -inkey key.pem -in cert.pemLet’s Encrypt
Abschnitt betitelt „Let’s Encrypt“Was ist Let’s Encrypt?
Abschnitt betitelt „Was ist Let’s Encrypt?“Let’s Encrypt ist eine kostenlose, automatisierte Zertifizierungsstelle. Die Zertifikate sind von allen gängigen Browsern vertraut und 90 Tage gültig. ReadyStackGo erneuert sie automatisch.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Öffentlich erreichbare Domain - Let’s Encrypt muss deine Domain validieren können
- DNS-Eintrag - Die Domain muss auf deinen Server zeigen
- Port 80 oder DNS-Zugriff - Je nach Challenge-Typ
Challenge-Typen
Abschnitt betitelt „Challenge-Typen“Let’s Encrypt verwendet Challenges um zu verifizieren, dass du die Domain kontrollierst:
| Challenge | Anforderung | Vorteile |
|---|---|---|
| HTTP-01 | Port 80 erreichbar | Einfachste Einrichtung |
| DNS-01 | DNS-Zugriff | Wildcard-Support, kein Port 80 nötig |
Schritt-für-Schritt: HTTP-01 Challenge
Abschnitt betitelt „Schritt-für-Schritt: HTTP-01 Challenge“Diese Methode ist am einfachsten, wenn ReadyStackGo direkt aus dem Internet erreichbar ist.
Voraussetzung: Port 80 muss auf deinen Server zeigen (nicht nur Port 443).
- Navigiere zu Settings → TLS / Certificates
- Klicke auf Configure Certificate
- Wähle Let’s Encrypt
- Gib folgende Daten ein:
- Domains: Deine Domain(s), z.B.
rsgo.example.com - E-Mail: Für Ablaufbenachrichtigungen
- Challenge Type: HTTP-01
- Domains: Deine Domain(s), z.B.
- Optional: Aktiviere Use Staging zum Testen (keine echten Zertifikate)
- Klicke auf Request Certificate
- Warte auf die Validierung (wenige Sekunden bis Minuten)
- Starte ReadyStackGo neu
Schritt-für-Schritt: DNS-01 Challenge (Manuell)
Abschnitt betitelt „Schritt-für-Schritt: DNS-01 Challenge (Manuell)“Diese Methode erfordert manuelles Erstellen von DNS-Einträgen, funktioniert aber auch für Wildcard-Domains.
- Navigiere zu Settings → TLS / Certificates
- Klicke auf Configure Certificate
- Wähle Let’s Encrypt
- Gib folgende Daten ein:
- Domains: Deine Domain(s), z.B.
*.example.com - E-Mail: Für Ablaufbenachrichtigungen
- Challenge Type: DNS-01
- DNS Provider: Manual
- Domains: Deine Domain(s), z.B.
- Klicke auf Request Certificate
- Die UI zeigt dir die benötigten TXT-Records:
Name: _acme-challenge.example.comValue: abc123xyz...- Erstelle den TXT-Record bei deinem DNS-Provider
- Warte auf DNS-Propagation (kann bis zu 24 Stunden dauern)
- Klicke auf Confirm DNS Challenge
- Starte ReadyStackGo neu
Schritt-für-Schritt: DNS-01 Challenge (Cloudflare)
Abschnitt betitelt „Schritt-für-Schritt: DNS-01 Challenge (Cloudflare)“Mit Cloudflare werden DNS-Records automatisch erstellt und gelöscht.
-
Erstelle einen Cloudflare API-Token:
- Gehe zu Cloudflare Dashboard → Profile → API Tokens
- Klicke auf Create Token
- Wähle Edit zone DNS als Template
- Beschränke auf deine Zone
- Kopiere den Token
-
Navigiere zu Settings → TLS / Certificates
-
Klicke auf Configure Certificate
-
Wähle Let’s Encrypt
-
Gib folgende Daten ein:
- Domains: Deine Domain(s)
- E-Mail: Für Ablaufbenachrichtigungen
- Challenge Type: DNS-01
- DNS Provider: Cloudflare
- Cloudflare API Token: Der kopierte Token
- Cloudflare Zone ID: (Optional) Findest du im Cloudflare Dashboard unter Overview
-
Klicke auf Request Certificate
-
Starte ReadyStackGo neu
Automatische Erneuerung
Abschnitt betitelt „Automatische Erneuerung“ReadyStackGo erneuert Let’s Encrypt-Zertifikate automatisch:
- Prüfintervall: Alle 12 Stunden
- Erneuerung: 30 Tage vor Ablauf
- Status: Sichtbar unter Settings → TLS
Falls die automatische Erneuerung fehlschlägt:
- Prüfe den Fehler unter Settings → TLS
- Stelle sicher, dass die Challenge noch funktioniert
- Bei DNS-01 Manual: Erstelle den neuen TXT-Record
Staging vs. Production
Abschnitt betitelt „Staging vs. Production“Let’s Encrypt hat strenge Rate-Limits für Production-Zertifikate. Zum Testen:
- Aktiviere Use Staging
- Teste die vollständige Konfiguration
- Staging-Zertifikate werden von Browsern nicht vertraut (Warnung)
- Deaktiviere Staging für das echte Zertifikat
- Fordere ein neues Zertifikat an
Reverse Proxy-Konfiguration
Abschnitt betitelt „Reverse Proxy-Konfiguration“Wann verwenden?
Abschnitt betitelt „Wann verwenden?“Wenn ReadyStackGo hinter einem Edge-Proxy läuft:
- nginx als Reverse Proxy
- Traefik für Container-Routing
- HAProxy für Load Balancing
- Cloud Load Balancer (AWS ALB, Azure App Gateway, etc.)
SSL-Handling-Modi
Abschnitt betitelt „SSL-Handling-Modi“ReadyStackGo unterstützt drei Modi für die SSL-Kommunikation mit dem Proxy:
SSL Termination
Abschnitt betitelt „SSL Termination“Client ──HTTPS──► Proxy ──HTTP──► ReadyStackGoBeschreibung:
- Der Proxy terminiert SSL und entschlüsselt den Traffic
- ReadyStackGo empfängt unverschlüsselten HTTP-Traffic
- ReadyStackGo benötigt kein Zertifikat
Wann verwenden:
- Proxy verwaltet alle Zertifikate (z.B. Traefik mit Let’s Encrypt)
- Einfachste Konfiguration
- Interne Verbindung (Proxy und ReadyStackGo im gleichen Netzwerk)
Konfiguration:
- Navigiere zu Settings → TLS / Certificates
- Aktiviere Reverse Proxy Mode
- Wähle SSL Termination
- Starte ReadyStackGo neu
Nginx Beispiel:
server { listen 443 ssl; server_name rsgo.example.com;
ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem;
location / { proxy_pass http://readystackgo:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; }}SSL Passthrough
Abschnitt betitelt „SSL Passthrough“Client ──HTTPS──► Proxy ──HTTPS──► ReadyStackGo (verschlüsselt durchgeleitet)Beschreibung:
- Der Proxy leitet den verschlüsselten Traffic unverändert weiter
- ReadyStackGo terminiert SSL
- ReadyStackGo benötigt ein Zertifikat
Wann verwenden:
- End-to-End-Verschlüsselung erforderlich
- ReadyStackGo verwaltet sein eigenes Zertifikat
- Layer 4 Load Balancing (TCP-Proxy)
Konfiguration:
- Konfiguriere ein Zertifikat in ReadyStackGo (selbstsigniert, eigenes, oder Let’s Encrypt)
- Navigiere zu Settings → TLS / Certificates
- Aktiviere Reverse Proxy Mode
- Wähle SSL Passthrough
- Starte ReadyStackGo neu
Nginx Beispiel (Stream-Modul):
stream { upstream readystackgo { server readystackgo:8443; }
server { listen 443; proxy_pass readystackgo; }}Traefik Beispiel:
entryPoints: websecure: address: ":443"
# Dynamic configtcp: routers: rsgo: rule: "HostSNI(`rsgo.example.com`)" service: rsgo tls: passthrough: true services: rsgo: loadBalancer: servers: - address: "readystackgo:8443"Re-Encryption
Abschnitt betitelt „Re-Encryption“Client ──HTTPS──► Proxy ──HTTPS──► ReadyStackGo (terminiert) (neu verschlüsselt)Beschreibung:
- Der Proxy terminiert die Client-SSL-Verbindung
- Der Proxy erstellt eine neue SSL-Verbindung zu ReadyStackGo
- Beide Seiten benötigen Zertifikate
Wann verwenden:
- Compliance erfordert verschlüsselte interne Verbindungen
- Zero-Trust-Netzwerk
- Proxy und ReadyStackGo in verschiedenen Netzwerksegmenten
Konfiguration:
- Konfiguriere ein Zertifikat in ReadyStackGo
- Navigiere zu Settings → TLS / Certificates
- Aktiviere Reverse Proxy Mode
- Wähle Re-Encryption
- Starte ReadyStackGo neu
Nginx Beispiel:
server { listen 443 ssl; server_name rsgo.example.com;
ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem;
location / { proxy_pass https://readystackgo:8443; proxy_ssl_verify off; # Für selbstsigniertes Backend-Zertifikat proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; }}Forwarded Headers
Abschnitt betitelt „Forwarded Headers“Bei SSL Termination und Re-Encryption verarbeitet ReadyStackGo automatisch X-Forwarded-* Header:
| Header | Beschreibung |
|---|---|
X-Forwarded-For | Echte Client-IP (wichtig für Logs und Rate-Limiting) |
X-Forwarded-Proto | Original-Protokoll (http/https) für korrekte Redirects |
X-Forwarded-Host | Original-Hostname für URL-Generierung |
Diese Headers werden automatisch vertraut, wenn der Reverse Proxy-Modus aktiviert ist.
Vergleichstabelle SSL-Modi
Abschnitt betitelt „Vergleichstabelle SSL-Modi“| Aspekt | SSL Termination | SSL Passthrough | Re-Encryption |
|---|---|---|---|
| Zertifikat in ReadyStackGo | Nicht nötig | Erforderlich | Erforderlich |
| Proxy-Zertifikat | Erforderlich | Nicht nötig | Erforderlich |
| Traffic zum Backend | HTTP | HTTPS | HTTPS |
| Forwarded Headers | Ja | Nein | Ja |
| Proxy kann Traffic lesen | Ja | Nein | Ja |
| Konfigurationskomplexität | Niedrig | Mittel | Mittel |
HTTP-Port aktivieren/deaktivieren
Abschnitt betitelt „HTTP-Port aktivieren/deaktivieren“ReadyStackGo kann optional auch HTTP (unverschlüsselt) anbieten:
- Navigiere zu Settings → TLS / Certificates
- Aktiviere oder deaktiviere HTTP Enabled
- Starte ReadyStackGo neu
Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“Zertifikat wird nicht geladen
Abschnitt betitelt „Zertifikat wird nicht geladen“Problem: Nach dem Upload wird das alte Zertifikat angezeigt.
Lösung: ReadyStackGo muss neu gestartet werden, damit das neue Zertifikat geladen wird.
Let’s Encrypt schlägt fehl
Abschnitt betitelt „Let’s Encrypt schlägt fehl“Problem: “Failed to validate domain”
Mögliche Ursachen:
- HTTP-01: Port 80 nicht erreichbar
- DNS-01: TXT-Record nicht erstellt oder noch nicht propagiert
- Domain zeigt nicht auf Server: DNS-Eintrag prüfen
Debug-Schritte:
- Prüfe den Fehler unter Settings → TLS
- Teste Port 80 Erreichbarkeit:
curl http://deinedomain.com/.well-known/acme-challenge/test - Prüfe DNS:
dig TXT _acme-challenge.deinedomain.com
Browser zeigt Sicherheitswarnung
Abschnitt betitelt „Browser zeigt Sicherheitswarnung“Bei selbstsigniertem Zertifikat: Erwartet. Verwende Let’s Encrypt oder ein CA-Zertifikat für Produktion.
Bei Let’s Encrypt: Prüfe, ob du im Staging-Modus bist. Staging-Zertifikate sind nicht vertraut.
Proxy erhält “Connection refused”
Abschnitt betitelt „Proxy erhält “Connection refused”“Problem: Der Reverse Proxy kann ReadyStackGo nicht erreichen.
Prüfe:
- Läuft ReadyStackGo?
docker ps - Richtiger Port? HTTP = 8080, HTTPS = 8443
- Netzwerk-Konnektivität?
docker network ls
Weiterführende Links
Abschnitt betitelt „Weiterführende Links“- Installation - ReadyStackGo installieren
- Stack Deployment - Stacks deployen