Zum Inhalt

🔧 SSL-Fehler beheben: Cloudflare Tunnel für Grafana

Problem

curl und andere CLI-Tools zeigen SSL-Handshake-Fehler:

LibreSSL/3.3.6: error:1404B410:SSL routines:ST_CONNECT:sslv3 alert handshake failure

Ursache

Cloudflare's SSL/TLS-Verschlüsselungsmodus ist nicht korrekt für HTTP-Origins konfiguriert.

✅ Lösung: Cloudflare Dashboard-Einstellungen

Option 1: SSL/TLS auf "Flexible" setzen (Empfohlen für HTTP-Origin)

  1. Öffne Cloudflare Dashboard:
  2. https://dash.cloudflare.com/
  3. Wähle Domain: karma.organic

  4. Navigiere zu SSL/TLS-Einstellungen:

  5. Linke Sidebar → SSL/TLS
  6. Tab: Overview

  7. Ändere Verschlüsselungsmodus:

  8. Aktuell wahrscheinlich: Full oder Full (strict)
  9. Ändere zu: Flexible

Flexible bedeutet: - ✅ Cloudflare ↔ Browser: HTTPS (SSL/TLS) - ✅ Cloudflare ↔ Origin (localhost:3001): HTTP (kein SSL) - ✅ Perfekt für unsere Konfiguration!

  1. Speichern und warten:
  2. Änderungen werden sofort aktiv
  3. Warte 1-2 Minuten für Edge-Propagierung

  4. Testen:

    curl -I https://grafana.solarlog.karma.organic
    # Sollte jetzt: HTTP/1.1 302 Found zeigen
    

Option 2: SSL/TLS für spezifische Subdomain (Erweitert)

Falls du "Full" für andere Subdomains behalten willst:

  1. Page Rules erstellen:
  2. Cloudflare Dashboard → RulesPage Rules
  3. Create Page Rule

  4. Konfiguration:

    URL: grafana.solarlog.karma.organic/*
    Settings:
      - SSL: Flexible
    

  5. Save and Deploy

Option 3: Self-Signed Cert für Grafana (Nicht empfohlen)

Alternativ könntest du Grafana mit einem Self-Signed Zertifikat konfigurieren und "Full" in Cloudflare nutzen, aber das ist unnötig komplex für lokale Development.

🧪 Nach der Änderung testen

CLI-Test:

# Sollte HTTP 302 (Redirect zu /login) zeigen
curl -I https://grafana.solarlog.karma.organic

# Sollte Grafana-HTML zurückgeben
curl -sL https://grafana.solarlog.karma.organic | head -20

Browser-Test:

# Öffne in Browser
open https://grafana.solarlog.karma.organic

# Login:
# Username: admin
# Password: solarlog_grafana_2024

📊 Status-Check

# 1. Lokaler Zugriff (sollte IMMER funktionieren)
curl -I http://localhost:3001
# ✅ Erwartung: HTTP/1.1 302 Found

# 2. DNS-Auflösung
nslookup grafana.solarlog.karma.organic
# ✅ Erwartung: 104.21.40.68, 172.67.179.228

# 3. Tunnel-Status
pgrep -fl cloudflared
# ✅ Erwartung: Prozess-ID mit "run solarlog-tunnel"

# 4. HTTPS-Zugriff (nach Cloudflare-Änderung)
curl -I https://grafana.solarlog.karma.organic
# ✅ Erwartung: HTTP/1.1 302 Found

🔍 Warum Flexible und nicht Full?

Modus Browser→CF CF→Origin Use Case
Off HTTP HTTP Keine Verschlüsselung
Flexible HTTPS HTTP Origin ohne SSL (unser Fall!)
Full HTTPS HTTPS (self-signed OK) Origin mit SSL
Full (strict) HTTPS HTTPS (valid cert) Production mit echten Certs

Unser Setup: - Grafana läuft in Docker: http://localhost:3001 (kein SSL) - Cloudflare Tunnel: Verbindet zu http://localhost:3001 - User-Zugriff: https://grafana.solarlog.karma.organic (SSL von Cloudflare)

"Flexible" ist die richtige Wahl!

⚠️ Wichtig: Sicherheit

Frage: Ist "Flexible" unsicher?

Antwort: Nein! Weil: 1. ✅ Traffic Browser → Cloudflare ist verschlüsselt (HTTPS) 2. ✅ Traffic Cloudflare → Origin ist lokal (localhost, kein Internet) 3. ✅ Cloudflare Tunnel nutzt eigene Verschlüsselung 4. ✅ Niemand kann Traffic zwischen Cloudflare und localhost abhören

"Flexible" ist perfekt für lokale Docker-Container!

🚀 Alternative: Browser nutzen

Falls Cloudflare-Änderung nicht sofort möglich:

Browser ignorieren oft SSL-Fehler besser als CLI-Tools:

# Öffne in Chrome/Safari/Firefox:
open https://grafana.solarlog.karma.organic

# Falls Warnung erscheint:
# Chrome: "Erweitert" → "Trotzdem fortfahren"
# Safari: "Details" → "Website besuchen"
# Firefox: "Erweitert" → "Risiko akzeptieren"

Browser haben modernere SSL-Stacks und können mit Cloudflare's Zertifikaten besser umgehen als curl/LibreSSL.

📝 Zusammenfassung

Problem: - SSL-Handshake schlägt fehl bei curl

Ursache: - Cloudflare SSL/TLS-Modus passt nicht zu HTTP-Origin

Lösung: 1. ✅ Cloudflare Dashboard öffnen 2. ✅ SSL/TLS → Overview 3. ✅ Modus ändern: Flexible 4. ✅ 1-2 Minuten warten 5. ✅ Testen mit curl oder Browser

Nach der Änderung:

curl -I https://grafana.solarlog.karma.organic
# HTTP/1.1 302 Found ← Erfolg! ✅


Status: Tunnel läuft ✅ | DNS propagiert ✅ | SSL-Modus anpassen ⏳