Homematic xml api zugriff schützen

Benutzer der XML API auf der Homeatic Zentrale (CCU) hatten ziemlich sicher bereits die selbe Idee wie ich:  Unterwegs komfortabel die Heizung der Wohnung mit dem Handy zu regulieren. Problem ist jedoch die Sicherheit: Die XML API bietet keinerlei Authentifizierung an.  Der erste Versuch war das absichern mit VPN. Der Komfort bleibt hier jedoch etwas auf der Strecke, da man mit dem Handy immer zuerst eine VPN Verbindung nach Hause aufbauen muss. Einfacher geht es natürlich direkt per https (Dank DynDNS Dienst der FritzBox).

Die Autorisierung habe ich über einen Reverse Proxy  in Form von NGINX auf meiner qnap Nas realisiert. Dieser soll eine Passwort Abfrage vor die API setzen.  Anstelle einer NAS würde sich hier natürlich auch ein Raspberry PI anbieten. Längerfristig will ich zwar die CCU durch die NAS komplett ersetzen, dazu fehlt mir aber erst einmal die Zeit.

Was ist nun zu tun:

Über die APP Manager auf der Administrations- Oberfläche installiert man zuerst das NGINX Paket.  Nun verbindet man sich per SSH auf die NAS und wechselt dort in das NGINX Verzeichnis: /share/CACHEDEV1_DATA/.qpkg/Nginx/nginx. Direkt dort habe ich eine Passwort Datei mit dem Namen htpasswd angelegt (vim). Deren Inhalt ist eine Liste mit Usernamen und gehashten Passworte die auf diversen Websites oder mit dem Kommando htpasswd erzeugt werden können. Leider nur nicht direkt auf der Nas:

bk@klapppower:~$ htpasswd -n MeinUser
New password: 
Re-type new password: 
MeinUser:$apr1$WUaw0QtE$CHHlgxVXGXavjwBeFHME60

bk@klapppower:~$ 

Der zweite Schritt ist nun die NGINX Konfiguration. Im Unterverzeichnis conf befindet sich die Datei nginx.conf.

[/share/CACHEDEV1_DATA/.qpkg/Nginx/nginx/conf] # ll
drwxr-xr-x    2 admin    administ      4.0k Dec 25 22:16 ./
drwxr-xr-x   12 admin    administ      4.0k Dec 14 20:27 ../
-rw-r--r--    1 admin    administ      1.0k Aug 22 13:33 fastcgi.conf
-rw-r--r--    1 admin    administ      1.0k Aug 22 13:33 fastcgi.conf.default
-rw-r--r--    1 admin    administ      1.1k Aug 22 13:33 fastcgi_params
-rw-r--r--    1 admin    administ       964 Aug 22 13:33 fastcgi_params.default
-rw-r--r--    1 admin    administ      2.8k Aug 22 13:33 koi-utf
-rw-r--r--    1 admin    administ      2.2k Aug 22 13:33 koi-win
-rw-r--r--    1 admin    administ      3.9k Aug 22 13:33 mime.types
-rw-r--r--    1 admin    administ      3.9k Aug 22 13:33 mime.types.default
-rw-r--r--    1 admin    administ      2.0k Dec 14 20:35 nginx.conf
-rw-r--r--    1 admin    administ      2.6k Aug 22 13:33 nginx.conf.default
-rw-r--r--    1 admin    administ       596 Aug 22 13:33 scgi_params
-rw-r--r--    1 admin    administ       596 Aug 22 13:33 scgi_params.default
-rw-r--r--    1 admin    administ       623 Aug 22 13:33 uwsgi_params
-rw-r--r--    1 admin    administ       623 Aug 22 13:33 uwsgi_params.default
-rw-r--r--    1 admin    administ      3.5k Aug 22 13:33 win-utf
[/share/CACHEDEV1_DATA/.qpkg/Nginx/nginx/conf] # 

In dieser gibt es einen Bereich der mit Server { eingeleitet wird.  Darin habe ich einen neunen location Bereich eingeleitet.

    server {
        listen       81 ssl;
        server_name  localhost;
	charset utf-8;

	...

	location /homematic {
	    auth_basic "Restricted";
            auth_basic_user_file /share/CACHEDEV1_DATA/.qpkg/Nginx/nginx/htpasswd;
	    charset iso-8859-1;
            proxy_pass https://homematic/;
	}

    }
}

Wird die Adresse der nas anschließend gefolgt von /homeatic aufgerufen wird  NGINX die Anfrage an die CCU umleiten.

Wesentlich sind die Parameter auth_basic_user_file welcher den Pfad zur zuvor erstellen Passwortdatei enthält, charset um Zeichensatz Probleme mit der API zu lösen und proxy_pass welcher die Adresse der CCU im Lokalen Netzwerk angibt.

Zuletzt muss noch nginx auf der NAS neu gestartet werden. Was dazu der vorgesehene Weg ist habe ich nicht recherchiert. Ich habe ihn einfach gekillt und neu gestartet:

[/share/CACHEDEV1_DATA/.qpkg/Nginx/nginx] # killall nginx
[/share/CACHEDEV1_DATA/.qpkg/Nginx/nginx] # /usr/local/nginx/sbin/nginx
[/share/CACHEDEV1_DATA/.qpkg/Nginx/nginx] # 

 

Fertig.

 

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .

3 Gedanken zu “Homematic xml api zugriff schützen”