Kennen Sie das Gefühl? Sie haben Stunden damit verbracht, Ihren eigenen Passwort-Manager Vaultwarden auf Ihrem geliebten Raspberry Pi einzurichten. Alles läuft, die Passwörter sind sicher verwahrt, aber da ist ein Haken: Ihr Browser schreit „Unsicher!”, die Verbindung läuft nur über HTTP, anstatt über das sichere HTTPS. Ein echter Albtraum für einen Dienst, der Ihre sensibelsten Daten schützt! Sie haben alles versucht – doch Vaultwarden bleibt hartnäckig nur per HTTP erreichbar.
Dieses Problem ist frustrierend, aber Sie sind nicht allein. Viele Nutzer stolpern über die Komplexität der SSL-Zertifikate, der Reverse-Proxy-Konfiguration und der Netzwerkeinstellungen. Dieser Artikel führt Sie detailliert durch die potenziellen Ursachen und Lösungen, um Ihren Vaultwarden endlich sicher über HTTPS zu betreiben. Packen wir’s an!
Warum HTTPS für Vaultwarden absolut entscheidend ist
Bevor wir in die Fehlersuche eintauchen, lassen Sie uns kurz klären, warum HTTPS für einen Passwort-Manager wie Vaultwarden unerlässlich ist. HTTP-Verbindungen sind unverschlüsselt. Das bedeutet, dass jeder, der den Datenverkehr zwischen Ihrem Browser und Ihrem Raspberry Pi abfangen kann (z.B. im selben WLAN-Netzwerk, über Ihren Internetanbieter oder in einem öffentlichen Hotspot), potenziell Ihre Zugangsdaten, Passwörter und andere sensible Informationen mitlesen könnte. Ein Albtraum-Szenario!
HTTPS hingegen verschlüsselt die gesamte Kommunikation. Dies wird durch SSL/TLS-Zertifikate erreicht, die die Identität Ihres Servers authentifizieren und eine sichere, verschlüsselte Verbindung aufbauen. Für einen Dienst, der Ihre digitale Identität schützt, ist HTTPS nicht verhandelbar. Es ist das Fundament der Sicherheit.
Die typische Vaultwarden-Einrichtung auf dem Raspberry Pi
Die meisten Vaultwarden-Installationen auf dem Raspberry Pi nutzen Docker für die Containerisierung. Davor wird oft ein Reverse Proxy wie Nginx oder Caddy geschaltet. Dieser Reverse Proxy übernimmt mehrere Aufgaben:
- Er leitet Anfragen vom Internet an den richtigen Docker-Container weiter.
- Er verwaltet die SSL/TLS-Zertifikate, oft über Let’s Encrypt, und kümmert sich um die Verschlüsselung.
- Er kann HTTP-Anfragen automatisch auf HTTPS umleiten.
Die Fehlersuche muss daher alle Komponenten dieser Kette berücksichtigen: das Netzwerk, DNS, den Reverse Proxy, die Zertifikate und den Vaultwarden-Container selbst.
Die Problemzone eingrenzen: Wo könnte der Wurm drin sein?
Wenn Ihr Vaultwarden nur per HTTP erreichbar ist, bedeutet das, dass die unverschlüsselte Verbindung funktioniert, die verschlüsselte aber nicht. Dies weist oft auf ein Problem mit der SSL/TLS-Handshake, der Zertifikatskonfiguration oder der Port-Weiterleitung für 443 hin. Gehen wir systematisch vor.
1. Netzwerk und Port-Weiterleitung: Die Basis muss stimmen
Dies ist oft der erste und einfachste Punkt, der übersehen wird.
- Port 443 offen? Stellen Sie sicher, dass der Port 443 (für HTTPS) auf Ihrem Raspberry Pi offen ist. Wenn Sie eine Firewall wie UFW (Uncomplicated Firewall) verwenden, prüfen Sie den Status mit
sudo ufw status
. Stellen Sie sicher, dass 443 (und ggf. 80 für Let’s Encrypt Validierung und HTTP-Weiterleitung) erlaubt sind:sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
- Router Port Forwarding (Port-Weiterleitung): Wenn Sie Vaultwarden aus dem Internet erreichen möchten, muss Ihr Router Anfragen von außen auf Port 443 an die lokale IP-Adresse Ihres Raspberry Pis weiterleiten. Prüfen Sie die Einstellungen Ihres Routers. Stellen Sie sicher, dass Port 80 ebenfalls weitergeleitet wird, da Let’s Encrypt diesen oft für die Domain-Validierung benötigt und Ihr Reverse Proxy ihn für die HTTP-zu-HTTPS-Umleitung nutzen wird.
- IPv4 vs. IPv6: Vergewissern Sie sich, dass Ihre DNS-Einträge und Ihre Router-Konfiguration konsistent sind, falls Sie IPv6 verwenden.
- Lokale Zugänglichkeit: Können Sie Vaultwarden über HTTPS *innerhalb* Ihres Heimnetzwerks erreichen, wenn Sie die lokale IP-Adresse des Raspi anstelle des Domainnamens verwenden? (z.B.
https://192.168.1.100
). Wenn ja, deutet das auf ein Problem mit DNS oder der externen Erreichbarkeit hin. Beachten Sie, dass dabei Zertifikatswarnungen auftreten können, da das Zertifikat auf Ihren Domainnamen ausgestellt ist, nicht auf die IP.
2. DNS-Konfiguration: Zeigt alles in die richtige Richtung?
Damit Let’s Encrypt ein Zertifikat ausstellen und Ihr Browser Ihre Domain finden kann, muss Ihr Domain Name System (DNS) korrekt konfiguriert sein.
- A-Record/CNAME: Ihr Domainname (z.B.
vaultwarden.meinedomain.de
) muss über einen A-Record auf die öffentliche IP-Adresse Ihres Routers zeigen. Wenn Sie einen dynamischen DNS-Dienst (DDNS) verwenden, stellen Sie sicher, dass dieser aktiv ist und die IP-Adresse korrekt aktualisiert wird. - DNS Propagation: Nach Änderungen an Ihren DNS-Einträgen kann es eine Weile dauern (bis zu 24-48 Stunden), bis diese weltweit propagiert sind. Tools wie
dig
oder Online-DNS-Checker können hier helfen. - Subdomain: Wenn Sie eine Subdomain verwenden, stellen Sie sicher, dass der A-Record für diese Subdomain korrekt ist.
3. Reverse Proxy (Nginx/Caddy): Der Schlüssel zur HTTPS-Verbindung
Der Reverse Proxy ist die zentrale Komponente für die HTTPS-Terminierung. Hier passieren die häufigsten Fehler.
Für Nginx:
- Nginx-Konfiguration prüfen: Ihre Nginx-Konfigurationsdatei (oft unter
/etc/nginx/sites-available/yourdomain.conf
) ist entscheidend.- Stellen Sie sicher, dass ein
server
-Block für Port 443 existiert undssl
aktiviert ist:server { listen 443 ssl; server_name vaultwarden.meinedomain.de; ssl_certificate /etc/letsencrypt/live/vaultwarden.meinedomain.de/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/vaultwarden.meinedomain.de/privkey.pem; # ... weitere SSL-Parameter (ciphers, protocols) ... location / { proxy_pass http://127.0.0.1:8000; # Oder die IP/Port Ihres Vaultwarden-Containers # ... weitere Proxy-Header ... } # ... Websocket-Konfiguration ... }
- Prüfen Sie, ob der
proxy_pass
-Eintrag auf den korrekten Host und Port Ihres Vaultwarden-Containers zeigt. - Stellen Sie sicher, dass ein
server
-Block für Port 80 existiert, der alle HTTP-Anfragen auf HTTPS umleitet:server { listen 80; server_name vaultwarden.meinedomain.de; return 301 https://$host$request_uri; }
- Überprüfen Sie die Syntax der Nginx-Konfiguration mit
sudo nginx -t
und starten Sie Nginx neu mitsudo systemctl reload nginx
odersudo systemctl restart nginx
.
- Stellen Sie sicher, dass ein
- Nginx-Logs: Werfen Sie einen Blick in die Nginx-Fehlerprotokolle (oft unter
/var/log/nginx/error.log
), um Probleme beim Starten oder bei der SSL-Handshake zu identifizieren.
Für Caddy:
- Caddyfile-Konfiguration prüfen: Die Caddyfile (oft unter
/etc/caddy/Caddyfile
) ist in der Regel einfacher.vaultwarden.meinedomain.de { reverse_proxy 127.0.0.1:8000 # Oder die IP/Port Ihres Vaultwarden-Containers # ... weitere Caddy-spezifische Einstellungen ... }
Caddy kümmert sich automatisch um Let’s Encrypt und die HTTP-zu-HTTPS-Umleitung, solange die DNS-Auflösung und Port 80/443 stimmen.
- Caddy-Logs: Prüfen Sie die Caddy-Protokolle (oft über
sudo journalctl -u caddy
oder in einer Log-Datei, je nach Einrichtung).
4. SSL/TLS-Zertifikat (Let’s Encrypt): Das Herzstück der Verschlüsselung
Ein defektes, abgelaufenes oder falsch referenziertes Zertifikat ist eine sehr häufige Ursache für HTTPS-Probleme.
- Zertifikatstatus prüfen: Ist Ihr Let’s Encrypt Zertifikat gültig und nicht abgelaufen? Sie können dies überprüfen mit:
sudo certbot certificates
Dies zeigt alle von Certbot verwalteten Zertifikate und deren Ablaufdaten an.
- Korrekter Pfad: Stellen Sie sicher, dass der Pfad zu
fullchain.pem
undprivkey.pem
in Ihrer Reverse-Proxy-Konfiguration exakt stimmt. Ein Tippfehler oder ein falscher Domainname im Pfad kann das Problem verursachen. - Dateiberechtigungen: Haben die Zertifikatsdateien die richtigen Berechtigungen, sodass der Nginx/Caddy-Prozess sie lesen kann? Normalerweise gehören sie
root
und sind für andere nicht lesbar, aber der Webserver hat oft spezielle Gruppenrechte oder läuft unter einem Nutzer, der Zugriff hat. Dies wird normalerweise von Certbot korrekt eingerichtet. - Domain-Validierung: Kann Let’s Encrypt Ihre Domain validieren? Dies erfordert den Zugriff auf Port 80 oder 443 (HTTP-01 Challenge) oder die Möglichkeit, DNS-Einträge zu setzen (DNS-01 Challenge). Wenn Port 80/443 nicht erreichbar ist oder Ihr DNS falsch konfiguriert wurde, schlägt die Zertifikatserstellung oder -erneuerung fehl. Testen Sie eine Erneuerung im Trockenlauf:
sudo certbot renew --dry-run
Beheben Sie alle hier gemeldeten Fehler.
- Veraltete Certbot-Version: Eine veraltete Certbot-Installation kann ebenfalls Probleme verursachen. Stellen Sie sicher, dass Certbot aktuell ist.
5. Vaultwarden-Konfiguration: Der Container selbst
Obwohl der Reverse Proxy die SSL-Verbindung terminiert, gibt es einige Einstellungen in Vaultwarden, die relevant sein könnten.
- ROCKET_TLS: Wenn Sie Vaultwarden *direkt* mit SSL betreiben würden (ohne Reverse Proxy), müssten Sie die
ROCKET_TLS
Umgebungsvariable setzen. Da Sie einen Reverse Proxy verwenden, sollte diese **nicht** gesetzt sein oder auffalse
stehen. Vaultwarden im Container spricht dann unverschlüsselt (HTTP) mit dem Reverse Proxy, der die Verschlüsselung nach außen übernimmt. - DOMAIN-Variable: Es ist wichtig, die
DOMAIN
Umgebungsvariable in Ihrerdocker-compose.yml
oder Docker-Run-Befehl zu setzen, z.B.:environment: - DOMAIN=https://vaultwarden.meinedomain.de
Dies hilft Vaultwarden, korrekte URLs in den Antworten an die Clients zu generieren, insbesondere für Websockets. Ein fehlendes
https://
hier kann zu Problemen führen. - WEBSOCKET_ENABLED: Stellen Sie sicher, dass
WEBSOCKET_ENABLED=true
gesetzt ist, da dies für die Synchronisation der Bitwarden-Clients wichtig ist. Ihr Reverse Proxy muss auch Websocket-Verbindungen korrekt weiterleiten (siehe Reverse Proxy Konfiguration).
6. Docker-Compose / Docker-spezifische Probleme
Wenn Sie Docker verwenden, können Fehler in der docker-compose.yml
-Datei oder dem Docker-Netzwerk zu Problemen führen.
- Port-Mapping: Überprüfen Sie, ob der Vaultwarden-Container auf dem korrekten internen Port läuft (standardmäßig 8000) und ob dieser Port für den Reverse Proxy erreichbar ist. Wenn Sie den Vaultwarden-Port ändern, stellen Sie sicher, dass der Reverse Proxy ebenfalls darauf zeigt.
- Docker-Netzwerke: Wenn Sie benutzerdefinierte Docker-Netzwerke verwenden, stellen Sie sicher, dass der Reverse Proxy-Container und der Vaultwarden-Container sich im selben Netzwerk befinden oder dass der Reverse Proxy den Vaultwarden-Container über seine interne Docker-IP erreichen kann.
- Logs der Container: Überprüfen Sie die Logs des Vaultwarden-Containers mit
docker logs <container_name>
auf Fehlermeldungen. Auch die Logs des Reverse Proxy Containers (falls ebenfalls in Docker) sind hilfreich.
7. Browser- oder Client-Seite
Manchmal liegt das Problem nicht am Server, sondern am Client.
- Browser-Cache/HSTS: Ihr Browser könnte alte HTTP-Informationen zwischengespeichert haben. Versuchen Sie, den Cache zu leeren oder einen Inkognito-Modus zu verwenden. Wenn Sie zuvor HSTS (HTTP Strict Transport Security) für Ihre Domain aktiviert hatten und es ein Problem gab, kann der Browser hartnäckig versuchen, HTTPS zu erzwingen, selbst wenn der Server es nicht anbietet.
- Anderer Browser/Gerät: Testen Sie den Zugriff von einem anderen Browser oder einem anderen Gerät, um auszuschließen, dass es sich um ein lokales Problem handelt.
Schritt-für-Schritt-Aktionsplan zur Problemlösung
Gehen Sie die folgenden Schritte in dieser Reihenfolge durch, da sie logisch aufeinander aufbauen und die häufigsten Fehlerquellen abdecken:
- Netzwerkprüfung:
- Ist Port 443 auf Ihrem Raspberry Pi über UFW oder andere Firewalls offen?
- Ist Port 443 in Ihrem Router für die Port-Weiterleitung an die IP Ihres Raspberry Pis konfiguriert?
- Ist Port 80 ebenfalls für Let’s Encrypt und Umleitungen offen?
- Können Sie den Raspberry Pi über Port 443 von außen pingen (z.B. mit einem Online-Port-Checker)?
- DNS-Überprüfung:
- Zeigt Ihr A-Record für
vaultwarden.meinedomain.de
auf die korrekte öffentliche IP-Adresse Ihres Routers? - Ist die DNS-Propagation abgeschlossen?
- Zeigt Ihr A-Record für
- Zertifikatsstatus:
- Ist Ihr Let’s Encrypt Zertifikat gültig (
sudo certbot certificates
)? - Versuchen Sie einen Trockenlauf für die Erneuerung (
sudo certbot renew --dry-run
) und beheben Sie alle Fehler.
- Ist Ihr Let’s Encrypt Zertifikat gültig (
- Reverse Proxy Konfiguration (Nginx/Caddy):
- Prüfen Sie, ob die Konfiguration für Port 443 korrekt ist (
listen 443 ssl;
, korrektessl_certificate
undssl_certificate_key
Pfade). - Stimmt der
proxy_pass
auf den Vaultwarden-Container? - Ist die HTTP-zu-HTTPS-Umleitung für Port 80 korrekt konfiguriert?
- Überprüfen Sie die Konfigurationssyntax (
sudo nginx -t
oder Caddyfile-Syntax) und starten Sie den Dienst neu. - Schauen Sie in die Logs des Reverse Proxy (Nginx error.log oder Caddy logs).
- Prüfen Sie, ob die Konfiguration für Port 443 korrekt ist (
- Vaultwarden Container & Docker:
- Stimmen die Port-Mappings in Ihrer
docker-compose.yml
? - Ist die
DOMAIN
Variable in der Vaultwarden-Umgebung mithttps://
gesetzt? - Überprüfen Sie die Logs des Vaultwarden-Containers (
docker logs <container_name>
).
- Stimmen die Port-Mappings in Ihrer
- Browser-Cache:
- Leeren Sie den Browser-Cache oder nutzen Sie den Inkognito-Modus.
Tools für die Diagnose
openssl s_client -connect yourdomain.com:443
: Ein mächtiges Tool, um die SSL-Verbindung zu testen. Es zeigt Details des Zertifikats und des SSL-Handshakes an. Achten Sie auf Fehler wie „Verify return code: 20 (unable to get local issuer certificate)”.curl -v https://yourdomain.com
: Zeigt detaillierte Informationen über die HTTP/HTTPS-Verbindung und Header an, inklusive SSL-Handshake-Details.- Online SSL Checker (z.B. SSL Labs): Geben Sie Ihre Domain ein, um eine detaillierte Analyse Ihrer SSL-Konfiguration und Ihres Zertifikats zu erhalten. Dies kann Probleme aufdecken, die Sie sonst übersehen würden.
nmap -p 80,443 yourdomain.com
: Prüft, ob die Ports 80 und 443 auf Ihrer öffentlichen IP-Adresse offen sind.
Fazit
Das Problem, dass Vaultwarden auf dem Raspberry Pi hartnäckig nur per HTTP erreichbar ist, kann viele Ursachen haben. Es erfordert oft eine systematische Fehlersuche, die von der Netzwerkebene über DNS, Reverse Proxy und SSL-Zertifikate bis hin zur Anwendungskonfiguration reicht. Bleiben Sie geduldig, gehen Sie die Schritte der Reihe nach durch und nutzen Sie die genannten Diagnose-Tools. Es ist sehr wahrscheinlich, dass Sie die Lösung finden werden.
Sobald Ihr Vaultwarden sicher über HTTPS erreichbar ist, können Sie beruhigt sein, dass Ihre Passwörter und sensiblen Daten optimal geschützt sind. Der Aufwand lohnt sich definitiv für diese zusätzliche Schicht an Sicherheit und Vertrauen.