Stell dir vor, du könntest dein Heimnetzwerk sicherer machen, indem du HTTPS anstelle von HTTP verwendest, um deine Daten vor neugierigen Blicken zu schützen. Mit einem selbst signierten SSL-Zertifikat und Pihole, ist genau das möglich. In dieser Anleitung zeige ich dir, wie du Schritt für Schritt dein eigenes SSL-Zertifikat in Pihole integrierst.
Was wird für Pihole mit SSL-Zertifikat benötigt?
- Eine Installation von Pihole, mit Lighttpd Server
- Wie man Pihole am besten auf einem Proxmox Server installiert, habe ich in diesem Artikel beschrieben:
- Dann brauchst du noch ein SSL-Zertifikat, eine komplette Anleitung und Erklärung findest du hier:
- Zugang zu deiner Pihole Installation zum Beispiel über SSH, ich benutze PuTTY und zum Dateiübertragen am liebsten WinSCP. Wie du eine Verbindung mit diesen Programmen aufbaust, erfährst du hier:
Vorbereitungen auf der Pihole Lighttpd Installation
Du musst zuerst die SSL Unterstützung aktivieren, dazu erstellst du eine external.conf
mit folgendem Befehl:
nano /etc/lighttpd/conf-available/external.conf
Der Inhalt der external Konfigurationsdatei sieht bei mir so aus:
$SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/ssl/private/pihole.fritz.box.combined.pem" }
Du musst natürlich dein Zertifikat an diese Stelle kopieren /etc/ssl/private/
. Beachte, dass es sich um eine Zusammengesetzte (combined
) Datei handeln muss, diese enthält das Zertifikat und den privaten Schlüssel. Wie das funktioniert, wird auch in meinem Artikel zu SSL-Zertifikaten beschrieben.
Diese External-Datei wird standardmäßig von der Hauptkonfiguration von Lighttpd geladen, das hat den Vorteil, dass bei Updates, bei der die Hauptkonfiguration unter Umständen überschrieben wird, deine Konfigurationen erhalten bleiben.
Jetzt muss nur noch ein symbolischer Link erstellt werden, denn Lighttpd sucht im Ordner /etc/lighttpd/conf-enabled
nach aktiven Konfigurationen und in diesem Ordner sind aber nur Links zu den eigentlichen Konfigurationen vorhanden.
sudo ln -s /etc/lighttpd/conf-available/external.conf /etc/lighttpd/conf-enabled/external.conf
Überprüfen der Konfiguration
Die erstellte Konfiguration kannst du nun mit folgendem Befehl überprüfen:
lighttpd -t -f /etc/lighttpd/lighttpd.conf
Wenn so etwas wie das folgende angezeigt wird, fehlt noch ein Paket, denn in neueren Versionen ist die SSL Unterstützung mit OpenSSL nicht mehr Teil der Lighttpd Standardinstallation.
2024-04-29 19:03:20: (configfile.c.279) Warning: please add "mod_openssl" to server.modules list in lighttpd.conf. A future release of lighttpd 1.4.x *will not* automatically load mod_openssl and lighttpd *will not* use SSL/TLS where your lighttpd.conf contains ssl.* directives Syntax OK
Das stellt aber kein größeres Problem dar, wir installieren die mod_openssl
und tragen diese in die lighttpd.conf
ein. Wie folgend angegeben.
Die Installation geht mit dem folgenden Befehl:
sudo apt-get install lighttpd-mod-openssl
Jetzt muss noch die Lighttpd Konfiguration erweitert werden:
nano /etc/lighttpd/lighttpd.conf
Die Server Module werden ganz am Anfang geladen und sollen auch dort hin. Ich hoffe nur, dass bei Updates dieser Bereich nicht überschrieben wird. Das habe ich noch nicht getestet. Der neue Eintrag ist mit „Hinzugefügt“ gekennzeichnet. Am Rest der Datei nichts verändern.
„server.modules = ( "mod_openssl", # Hinzugefügt "mod_indexfile", "mod_access", "mod_alias", "mod_redirect", )
Nach dem Speichern muss der Lighttpd Server neu gestartet werden:
sudo service lighttpd restart
Pihole ist nun über HTTPS ohne Warnung erreichbar
Hast du nach meiner Anleitung dein SSL-Zertifikat erstellt und das Root-Zertifikat auf deinem Client-Rechner, mit dem du Pihole aufrufst, importiert, ist Pihole auch über die IP-Adresse mit HTTPS erreichbar. Keine Warnmeldung mehr!
Ich hoffe, der Artikel hilft dem einen oder anderen, speziell die fehlende Information das ein OpenSSL Modul fehlt, war bei mir lange der Grund, dass es nicht lief.
Danke für das Lesen, hinterlasse doch ein Kommentar!