Es kann nicht immer Nginx sein um eine Reverse Proxy Verbindung, z.B. zu einem Unifi Controller aufzubauen. Manchmal ist eben ein Apache das Webserver-Zugpferd. Die Anforderung in diesem speziellen Beispiel ist als Absicherung für einen Unifi Controller gedacht, der seine GUI an Port 8443, mit einem selbst signierten SSL Zertifikat ausliefert. Damit ergeben sich die beiden Probleme: SSL und Reverse Proxy.
Certbot installieren
Die Lösung ist einfach, indem zunächst Certbot installiert wird um das Zertifikat für den Apachen zu holen. Beschrieben wurde dies bereits im letzten Tutorial (siehe Abschnitt Plugin: Apache2).
Unifi Controller „einbetten“
Die Installation des Controllers wird auf der Seite des Herstellers erläutert und ist damit kein Thema für diese Anleitung. Vielmehr Thema ist das Problem des selbst signierten Zertifikats das mitgeliefert wird. Um den Vorteil der automatisierten Zertifikate von Let’s Encrypt mitzunehmen, soll dieses auch gar nicht angefasst, sondern stattdessen in den Apachen integriert werden. Der Controller hört im Beispiel auf Port 8443 – selber Server. Damit wird der Reverse Proxy auf 127.0.0.1:8443 gebunden. Dies bringt aber noch keinen entscheidenden Vorteil in Punkto Sicherheit. Dazu wird der Passwortschutz gesetzt, mit Hilfe eines Location Containers.
Um ein 502 (Bad Gateway) zu verhindern gibt es eine Besonderheit die es zu beachten gilt und zwar, dass der Apache die Gültigkeit des Unifi Zertifikats nicht in Frages stellt. Das erreicht man mit einer Reihe von SSLProxyCheck-Direktiven:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName uc.meinedomain.tld
ServerAdmin root@localhost
DocumentRoot "/path/to/ucontroller/"
<IfModule mod_headers.c>
Header always add Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>
<Location />
AuthType Basic
AuthName "Login"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Location>
Header set Host uc.meinedomain.tld
RequestHeader set Host 127.0.0.1
Header unset Referer
RequestHeader unset Referer
SSLEngine on
<IfModule mod_proxy.c>
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyRequests off
ProxyPass / https://127.0.0.1:8443/
ProxyPassReverse / https://127.0.0.1:8443/
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/uc_error.log
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/uc.meinedomain.tld/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/uc.meinedomain.tld/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/uc.meinedomain.tld/chain.pem
</VirtualHost>
</IfModule>
Fertig! Inklusive Passwortschutz
Schreibe einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.