mdzio / ccu-historian

Der CCU-Historian erfasst die Betriebsdaten des Hausautomations-Systems HomeMatic der Firma eQ-3.
http://www.ccu-historian.de
GNU General Public License v3.0
121 stars 14 forks source link

Unterstützung für HTTPS #121

Open mdzio opened 6 years ago

martinrieder commented 4 months ago

Ich habe bei mir erfolgreich den auf der CCU vorhandenen Webserver so konfigiert, dass er als reverse proxy fungiert. Das verursacht natürlich ein wenig Verzögerung, aber sonst gab es keine Probleme. Bei Interesse kann ich die Konfiguration dafür gerne mal raussuchen. Es ist nicht ganz trivial, weil das Dateisystem read-only eingebunden ist und natürlich bei jedem Update zurückgesetzt wird.

mdzio commented 4 months ago

Das hört sich interessant an. Gerne würde ich die Konfiguration mal sehen. Vielleicht lässt sich die Konfiguration des Webservers auch durch Add-Ons anpassen, ohne in den read-only Bereich zu gehen.

martinrieder commented 4 months ago

Okay, das letzte Update hat mir die Konfiguration wieder zurückgesetzt. Ich habe aber bestimmt noch irgendwo ein Backup. Prinzipiell ist es aber recht einfach:

/etc/lighttpd/conf.d/proxy_httpsredirect.conf

#-------------------
# WebUI HTTPS (TLS)
#-------------------
$SERVER["socket"] == ":443" {
  server.document-root = server_root
  include "/etc/lighttpd/conf.d/sslsettings.conf"
  $HTTP["url"] =~ "^/.*\.(exe|oxml|hssml).*" {
    $HTTP["remoteip"] !~ "^(127\.0\.0\.1|::ffff:127\.0\.0\.1|::1)$" {
      url.access-deny = ( "" )
    }
  }
  $HTTP["url"] !~ "^/(config/)|(upnp/)|(webui/)|(ise/)|(api/)|(tools/)|(pda)|(pages/jpages)|(addons).*" {
    proxy.server = ( "" => ("localhost" => ("host" => "127.0.0.1", "port" => 8183)))
  }
  $HTTP["url"] =~ "^/(pages/jpages).*" {
    proxy.server = ( "" => ("localhost" => ("host" => "127.0.0.1", "port" => 39292)))
  }
}

Direkt darunter steht der gleiche Eintrag nochmal für IPv6. Für HTTP ohne Verschlüsselung gibt es auch einen eigenen Abschnitt. Es muss dann jeweils eine zusätzliche Umleitung auf den TCP-Port des Historian definiert werden, etwa so:

$HTTP["url"] =~ "^/historian/.*" {
    proxy.server = ( "" => ("localhost" => ("host" => "127.0.0.1", "port" => 8082)))
  }

Für die Änderung muss man mount -o remount,rw / ausführen, anschließend auch gerne mit mount -o remount,ro / den Schreibschutz wieder aktivieren. Der "Proxy" lässt sich danach per /etc/init.d/S50lighttpd reload starten. Hierin versteckt sich auch die Überprüfung, ob Umleitung auf HTTPS statt findet, nämlich durch /etc/config/httpsRedirectEnabled.

Ich habe mich auch noch eingehender mit der SSL-Konfiguration beschäftigt, denn die ist nicht mehr ganz frisch. So mancher Browser beschwert sich über die 'unsichere' Verschlüsselung. Das muss ich aber nun wirklich aus dem Backup rausfischen. ;-)