CCU2: XML-API mit HTTPS-Authentifizierung (mod_auth)

Ich würde gerne auf meiner Homematic CCU2 das Plugin „XML-API“ verwenden. Dies ist im normalen internen Netzwerk soweit kein Problem, da man von außen nicht auf die Homematic CCU2 zugreifen kann. Da ich meine Homematic CCU2 bzw. mein Netzwerk so aufgebaut habe, dass ich von unterwegs ohne VPN auf gewisse Bereiche zugreifen kann (auch auf die CCU2) stellt das Plugin „XML-API“ eine gefährliche Sicherheitslücke dar. Man kann Variablen ändern und Programme ausführen ohne sich dafür einloggen zu müssen. Natürlich ist die Wahrscheinlichkeit, dass jemand ausgerechnet mein Netzwerk findet eher gering, aber sollte es gefunden werden…
Die Homematic CCU2 (Software 2.17.15) verwendet Lighttpd inklusive mod_auth – dieses mache ich mir zu nutzen um explizit das Plugin „XML-API“ mit einer zusätzlichen HTTP-Authentifizierung zu sichern. Dies Methode ist dennoch nur dann wirklich sicher, wenn das Passwort über eine verschlüsselte Verbindung übertragen wird. Voraussetzung für folgende Schritte:

  • Homematic CCU2 mit Software-Stand 2.11.9
  • Homematic CCU2 mit Software-Stand 2.17.15
  • Homematic CCU2 mit Software-Stand 2.21.10
  • microSD-Karte die in der CCU2 initialisiert ist
  • SSH-Zugang zur Homematic CCU2 (Einstellung -> Systemsteuerung -> Sicherheit)
  • Plugin „XML-API“ in Version 1.10
  1. Zuerst stellen ich die Verbindung zur Homematic CCU2 her:
    ssh root@192.168.1.5 #an dieser Stelle eure IP der CCU2
  2. Remount des Rootfs als Writeable:
    mount -o remount,rw /
  3. Wechseln auf die SD-Karte
    cd /media/sd-mmcblk0/
  4. Nun erstelle ich einen backup-Ordner:
    mkdir backup
  5. Backup der Standardkonfiguration
    cp /etc/lighttpd/lighttpd* /media/sd-mmcblk0/backup/
  6. Ordnungshalber eine kleine Ordnerstruktur auf der SD-Karte
  7. Erstellen unserer Konfigurationsdatei:

    Inhalt (Zugriff: Intern sowie Extern Passwortgeschützt):

    Inhalt (Zugriff: Extern passwortgeschützt):

    Hier stehen noch weiter Konfigurationsmöglichkeiten zur Verfügung: mehr Details unter: mod_auth
  8. Es fehlt noch die Passwort-Datei:
    vi /media/sd-mmcblk0/etc/lighttpd/.htdigest
    Zum Generieren der Passwörter benutze ich folgenden Generator. Jede Zeile ein Benutzer und achtet darauf, dass realm identisch ist!
  9. Nun füge ich die erstellte config.conf in die „Serverkonfiguration“ ein.
    Unter cd /etc/lighttpd/ findet man:

    • lighttpd.conf
    • lighttpd_ssl.conf

    Wie man aus den Dateinamen schon erahnen kann ist die eine Datei für die Verbindung ohne SSL zuständig und die andere mit. Grundsätzlich könnte man die Konfiguration z.B. nur in der lighttpd.conf aufrufen, wenn man weiß dass so und so nur über HTTP zugegriffen wird. In diesem Moment könnte man aber über HTTPS nach wie vor ohne zusätzliches Passwort die Inhalte aufrufen. Grundsätzlich empfehle ich generell nur den Zugriff über HTTPS abzuwickeln – trotzdem müssen wir beide Dateien anpassen.

  10. Am Ende beider Dateien inkludiere ich meine Konfiguration:

  11. Zu guter letzt starte ich die Homematic CCU2 über Einstellung -> Systemsteuerung -> Zentralen-Wartung neu!

Nun ist der „XML-API“-Zugriff nur mit HTTP/HTTPS-Authentifizierung möglich!

Hinweis: Man benötigt nicht unbedingt eine SD-Karte. Allerdings sollten mal Software-Updates kommen ist man so auf der sicheren Seite und muss nicht ggf. alles neu schreiben sondern nur die config.conf wieder einfügen.

It's only fair to share...Email this to someoneShare on Facebook1Tweet about this on TwitterShare on Google+0

20 Gedanken zu “CCU2: XML-API mit HTTPS-Authentifizierung (mod_auth)

  1. Das Problem hat sich geklärt. Nun habe ich aber das Problem das Home24 und Homedroid damit nicht zurecht kommen trage in beiden Apps den Benutzer und das Passwort ein womit ich den XML API geschützt habe. Aber trotzdem keine Verbindung.

    Super Anleitung übrigens von dir. Die Ccu2 ging nicht mehr an weil die sd Karte nicht initialisiert war und er bei jedem Neustadt meine Ordner von der sd gelöscht hat. Aber die beiden Dateien lighttpd.conf
    lighttpd_ssl.conf am Ende inkludiert waren

  2. Hi.
    Deine Anleitung funzt super.
    Wenn ich nach diesen Schema im Browser aufrufe (http://meindyndns/config/xmlapi/%5BSkript%5D), werde ich nach Benutzernamen und Passwort gefragt. Bei richtiger Eingabe erscheint auch die aufgerufene Seite. Also anscheinend alles richtig gemacht
    Nur wenn ich über die App Homedroid oder home24 verbinden möchte, bekomme ich keinen Zugriff. Entsprechende Einstellungen in den Apps habe ich vorgenommen (user und passwd)
    Woran kann das liegen?
    Diese Apps kommunizieren meines Wissens nach über die XML-API.

    Vielen Dank im voraus !

    Luke

  3. Hi, leider bleibt bei mir der ganze http dienst down. also ich komme auf die ganze CCU nicht mehr drauf. Per ssh aber sehr wohl auf die SD und auch aufs Filesystem. Ich nehme dann den Include wieder raus und starte neu – dann klappts. hmm. hast du einen Tipp für mich? Kann ich das auch direkt in die lighthttpd.conf einbauen?

    LG

    • Hi,

      Ich habe es gerade selbst nochmal unter der aktuellen Firmware versucht. Es hätte ja sein können, dass es daran liegt. Hast du vielleicht einen Tippfehler gemacht?
      Die Konfiguration auf der SD-Karte zu speichern hat den großen Vorteil, dass du nicht nach jedem Firmware-Update schauen, dass du die ganze Konfiguration neu schreiben musst.

      Bei mir funktioniert es…

      LG

  4. Bei mir klappt es auch mit den Apps Home24 oder Homedroid nicht. Egal ob ssl oder nicht. Ob mit benutzer und Passwort in der app eingegeben oder über Benutzer:passwort@ip Es kommt immer fehler 401

    • Hallo Michael,

      ich bin gerade dabei auf meinem Mac die Android SDK zum laufen zu bringen und werde mich mal an beiden Apps versuchen!
      Hoffe ich schaffe es diese Woche noch zu berichten!

      Grüße

      Psycho0verload

    • Ich habe das Problem glaube ich lösen können, die von mir angegebene Methode ist eine etwas sicherere und damit ist für die Apps das verbinden nicht möglich. Ich werde im laufe des Tages ein neues Tutorial schreiben 🙂

  5. gibt es hier schon Neuigkeiten????
    Komme genauso weit wie meine Vorredner….
    Kann es auch sein dass der Pfad bei der Datei: Inhalt (Zugriff: Intern sowie Extern Passwortgeschützt):
    für die htdigest nicht stimmt?????

    Über eine funktionierende Anleitung würde ich mich auch freuen…..

    Danke

    • Hallo Kraehe,

      ich bin gerade dabei auf meinem Mac die Android SDK zum laufen zu bringen und werde mich mal an beiden Apps versuchen!
      Hoffe ich schaffe es diese Woche noch zu berichten!

      Grüße

      Psycho0verload

      P.s.: Ich schaue die Pfade gerne nochmals nach aber ich verwende das Script genau so^^

    • Ich habe das Problem glaube ich lösen können, die von mir angegebene Methode ist eine etwas sicherere und damit ist für die Apps das verbinden nicht möglich. Ich werde im laufe des Tages ein neues Tutorial schreiben 🙂

  6. Kleiner Tip am Rande, für alle, bei denen es auch im Browser nicht funktioniert (wie z.B. beim Michael, Post v. 14.07.16 17:58:
    Wenn das Passwordfile unter Windows erstellt wird, bestehen die Zeilenumbrüche aus CR/LF (0D/0A), statt Unix-like nur aus LF (0A). Wenn man sich dann stundenlang einen Wolf gesucht hat, und endlich direkt auf der CCU mit vi rein schaut, steht dort dann „password^M“ statt „password“. Da ist es dann klar, warum die Anmeldung nie geklappt hat, und das log-File vor „(http_auth.c.885) password doesn’t match for …“ nur so strotzt.

    So, und nun mal schauen, was homedroid dazu sagt!
    René

  7. Hat bei mir direkt anstandslos funktioniert!
    Ich habe bei jetzt alles ab / mit der Authentifizierung versehen, da es so Bot Netzen/Hackern schwerer fällt, den Webserver als CCU2 zu identifizieren.

    Ich muss allerdings von der Lösung „Inhalt (Zugriff: Extern passwortgeschützt)“ abraten! Kommt ein „Hacker“ direkt über die IP greift die Authentifizierung Einrichtung nicht!

  8. Hi, gilt die Anleitung auch für CCU 2.27.8 und XML-API 1.12? Ich bekommt immer eine Seite mit „Bad Request“ zurück.
    Grüße MIchael

Schreibe einen Kommentar

53 + = sevenundfifty

Kommentare werden moderiert. Es kann etwas dauern, bis dein Kommentar angezeigt wird.