Vaultwarden und das Thema HTTPS


VK28.01
Go to solution Solved by Archonw,

Recommended Posts

Guten Tag zusammen!

Ich würde gerne von einer uralten 1Password Lizenz auf Vaultwarden wechseln. Dabei laufe ich in das Problem, dass Vaultwarden https verlangt und ich die Einrichtung nicht abschließen kann. Ich habe mich nun kreuz und quer durchs Netz gelesen und geguckt, bin aber an einem Punkt, wo ich nicht mehr weiter weiß. Irgendwie beschrieben die gefundenen Varianten immer Teilaspekte in anderen Kontexten und nun bekomme ich die gefunden Enden nicht zusammengeknotet bzw. ich verlieren beim Routing den Faden, was an welcher Stelle nötig bzw. überflüssig ist.

Vorab: da ich auf dem Router Wireguard laufen habe, reicht es mir, von außen Zugriff auf den Vaultwarden via VPN zu haben. 

 

Was ist vorhanden?

Klar, ein Unraid Server.

Fritz!Box mit Wireguard.

Fritzbox verteilt per DHCP Ip Adressen.

Fritz!Box lenkt DNS Anfragen an Pihole (Docker).

Eigene Domain inkl. Letsencrypt.

Duckdns (Docker), ehemals für Openvpn genutzt

 

Nginx Proxy inkl. dort erstelltem letsencrypt Zertifikat (testweise). Für Subdomain eingerichtet und laut Nginx online und mit einem Zertifikat versehen.

 

Wichtig wäre für mich wissen, was ich an "Komponenten" brauche, um die Minimalanforderung "Vaultwarden im Lokal Netz" einrichten und anwenden zu können.

 

Mischung aus Wald&Bäumen und ausbaufähiges Wissen in Sachen Netzwerke....würde ich mal tippen.

 

Thx 4 support!

 

 

 

Link to comment

gerne.

 

das hier ist die url, die aufgerufen wird, wenn ich die WebUi aufrufe. Seite wird aufgebaut, aber bei der Eingabe bzw. dem Absenden moniert er das Fehlende HTTPS, in dem klassischen roten Fensterchen.

http://192.168.0.125:4743/#/login

 

Ich bin im übrigen bei meiner letzen Variante folgender Beschreibung gefolgt, da ich meine Domain auch bei NetCup habe und den DNC Challenge nutzen wollte, um keine Ports freigeben zu müssen.

https://www.computerbase.de/forum/threads/anleitung-vaultwarden-bitwarden-nur-ueber-vpn-und-ohne-portfreigabe.2082737/

 

Auch das habe ich versucht, allerdings erfolglos:"...DNS-Server (ebenfalls in Docker, evtl. den weit verbreiteten Pihole) und richte dort ein CNAME für die IP ein. Dann kann jedes Gerät, egal ob Handy oder Rechner, egal ob per VPN nach Hause verbunden oder lokal im Netzwerk, über den DNS Server die IP auflösen und VaultWarden erreichen."

Edited by VK28.01
Link to comment
19 minutes ago, VK28.01 said:

das hier ist die url, die aufgerufen wird, wenn ich die WebUi aufrufe. Seite wird aufgebaut, aber bei der Eingabe bzw. dem Absenden moniert er das Fehlende HTTPS, in dem klassischen roten Fensterchen.

http://192.168.0.125:4743/#/login

Ok, also der Container unterstützt ausschließlich http und erwartet, dass man ihn hinter einem Proxy betreibt, über den dann https ermöglicht wird?

 

21 minutes ago, VK28.01 said:

DNS Challenge

Habe ich noch nicht probiert. Aber das geht in jedem Fall nur, wenn der NPM die API von NetCup unterstützt. Weil er fordert von Let's Encrypt den Token an, den er dann bei NetCup ins DNS schreibt. Let's Encrypt liest dann diesen Token im DNS wieder aus und erst dann wird das Zertifikat von Let's Encrypt freigegeben.

 

24 minutes ago, VK28.01 said:

Auch das habe ich versucht, allerdings erfolglos

Da musst du schon mehr zu schreiben. NPM generiert ja Logs, wenn die Challenge in die Hose geht. Also noch mal wiederholen und die Logs sichten.

Link to comment
22 minutes ago, mgutt said:

Da musst du schon mehr zu schreiben. NPM generiert ja Logs, wenn die Challenge in die Hose geht. Also noch mal wiederholen und die Logs sichten.

Die Audit Logs meinst Du vermutlich nicht, oder? Die sind nicht sehr aufschlussreich, wenn ich das richtig verstehe. Dann werde ich morgen mal weiter suchen...vielleicht hilft es ein wenig frischer zu sein. Ich liege gerade eine wenig auf dem Schlauch .

Link to comment
19 hours ago, mgutt said:

Auf das Container Icon klicken > Logs

Danke, dann war ich doch richtig unterwegs, aber zu müde, um es zu merken...

Der erste Eintrag macht mich ein wenig stutzig....

 

s6-svscanctl: fatal: unable to control /var/run/s6/services: supervisor not listening
[12/15/2022] [5:13:42 AM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [5:13:42 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [5:13:42 AM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [6:13:42 AM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [6:13:42 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [6:13:42 AM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [7:13:42 AM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [7:13:42 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [7:13:42 AM] [SSL      ] › ℹ  info      Renew Complete
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01_perms.sh: executing... 
Changing ownership of /data/logs to 0:0
[cont-init.d] 01_perms.sh: exited 0.
[cont-init.d] 01_s6-secret-init.sh: executing... 
[cont-init.d] 01_s6-secret-init.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
❯ Enabling IPV6 in hosts: /etc/nginx/conf.d
  ❯ /etc/nginx/conf.d/include/assets.conf
  ❯ /etc/nginx/conf.d/include/block-exploits.conf
  ❯ /etc/nginx/conf.d/include/force-ssl.conf
  ❯ /etc/nginx/conf.d/include/ip_ranges.conf
  ❯ /etc/nginx/conf.d/include/letsencrypt-acme-challenge.conf
  ❯ /etc/nginx/conf.d/include/proxy.conf
  ❯ /etc/nginx/conf.d/include/ssl-ciphers.conf
  ❯ /etc/nginx/conf.d/include/resolvers.conf
  ❯ /etc/nginx/conf.d/default.conf
  ❯ /etc/nginx/conf.d/production.conf
❯ Enabling IPV6 in hosts: /data/nginx
  ❯ /data/nginx/proxy_host/4.conf
[12/15/2022] [7:50:55 AM] [Migrate  ] › ℹ  info      Current database version: none
[12/15/2022] [7:50:56 AM] [Setup    ] › ℹ  info      Added Certbot plugins certbot-dns-netcup~=1.0.0 
[12/15/2022] [7:50:56 AM] [Setup    ] › ℹ  info      Logrotate Timer initialized
[12/15/2022] [7:50:56 AM] [Setup    ] › ℹ  info      Logrotate completed.
[12/15/2022] [7:50:56 AM] [IP Ranges] › ℹ  info      Fetching IP Ranges from online services...
[12/15/2022] [7:50:56 AM] [IP Ranges] › ℹ  info      Fetching https://ip-ranges.amazonaws.com/ip-ranges.json
[12/15/2022] [7:50:56 AM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v4
[12/15/2022] [7:50:56 AM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v6
[12/15/2022] [7:50:56 AM] [SSL      ] › ℹ  info      Let's Encrypt Renewal Timer initialized
[12/15/2022] [7:50:56 AM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [7:50:56 AM] [IP Ranges] › ℹ  info      IP Ranges Renewal Timer initialized
[12/15/2022] [7:50:56 AM] [Global   ] › ℹ  info      Backend PID 249 listening on port 3000 ...
[12/15/2022] [7:50:57 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [7:50:57 AM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [8:50:56 AM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [8:50:57 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [8:50:57 AM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [9:50:56 AM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [9:50:57 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [9:50:57 AM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [10:50:56 AM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [10:50:57 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [10:50:57 AM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [11:50:56 AM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [11:50:57 AM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [11:50:57 AM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [12:50:56 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [12:50:57 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [12:50:57 PM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [1:50:56 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [1:50:56 PM] [IP Ranges] › ℹ  info      Fetching IP Ranges from online services...
[12/15/2022] [1:50:56 PM] [IP Ranges] › ℹ  info      Fetching https://ip-ranges.amazonaws.com/ip-ranges.json
[12/15/2022] [1:50:56 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v4
[12/15/2022] [1:50:56 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v6
[12/15/2022] [1:50:57 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [1:50:57 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [1:50:57 PM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [2:50:56 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [2:50:57 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [2:50:57 PM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [3:50:56 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [3:50:57 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [3:50:57 PM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [4:50:56 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [4:50:57 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [4:50:57 PM] [SSL      ] › ℹ  info      Renew Complete
[12/15/2022] [5:50:56 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [5:50:57 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [5:50:57 PM] [SSL      ] › ℹ  info      Renew Complete

 

Link to comment

So, nochmal den Prozess durchlaufen. Nginx neugestartet. Zertifikat werde erstellt, das sehe ich, aber ansonsten sehe ich keine Veränderung...

 

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/npm-6/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/npm-6/privkey.pem
This certificate expires on 2023-03-15.
These files will be updated when the certificate renews.
NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                   https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[12/15/2022] [8:20:32 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01_perms.sh: executing... 
Changing ownership of /data/logs to 0:0
[cont-init.d] 01_perms.sh: exited 0.
[cont-init.d] 01_s6-secret-init.sh: executing... 
[cont-init.d] 01_s6-secret-init.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
❯ Enabling IPV6 in hosts: /etc/nginx/conf.d
  ❯ /etc/nginx/conf.d/include/assets.conf
  ❯ /etc/nginx/conf.d/include/block-exploits.conf
  ❯ /etc/nginx/conf.d/include/force-ssl.conf
  ❯ /etc/nginx/conf.d/include/ip_ranges.conf
  ❯ /etc/nginx/conf.d/include/letsencrypt-acme-challenge.conf
  ❯ /etc/nginx/conf.d/include/proxy.conf
  ❯ /etc/nginx/conf.d/include/ssl-ciphers.conf
  ❯ /etc/nginx/conf.d/include/resolvers.conf
  ❯ /etc/nginx/conf.d/default.conf
  ❯ /etc/nginx/conf.d/production.conf
❯ Enabling IPV6 in hosts: /data/nginx
  ❯ /data/nginx/proxy_host/5.conf
[12/15/2022] [8:20:59 PM] [Migrate  ] › ℹ  info      Current database version: none
[12/15/2022] [8:20:59 PM] [Setup    ] › ℹ  info      Added Certbot plugins certbot-dns-netcup~=1.0.0 
[12/15/2022] [8:20:59 PM] [Setup    ] › ℹ  info      Logrotate Timer initialized
[12/15/2022] [8:20:59 PM] [Setup    ] › ℹ  info      Logrotate completed.
[12/15/2022] [8:20:59 PM] [IP Ranges] › ℹ  info      Fetching IP Ranges from online services...
[12/15/2022] [8:20:59 PM] [IP Ranges] › ℹ  info      Fetching https://ip-ranges.amazonaws.com/ip-ranges.json
[12/15/2022] [8:20:59 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v4
[12/15/2022] [8:21:00 PM] [IP Ranges] › ℹ  info      Fetching https://www.cloudflare.com/ips-v6
[12/15/2022] [8:21:00 PM] [SSL      ] › ℹ  info      Let's Encrypt Renewal Timer initialized
[12/15/2022] [8:21:00 PM] [SSL      ] › ℹ  info      Renewing SSL certs close to expiry...
[12/15/2022] [8:21:00 PM] [IP Ranges] › ℹ  info      IP Ranges Renewal Timer initialized
[12/15/2022] [8:21:00 PM] [Global   ] › ℹ  info      Backend PID 247 listening on port 3000 ...
[12/15/2022] [8:21:00 PM] [Nginx    ] › ℹ  info      Reloading Nginx
[12/15/2022] [8:21:00 PM] [SSL      ] › ℹ  info      Renew Complete

Link to comment

Ich habe nun den Ngnix Prozess nochmal komplett mit einer anderen Domain bzw. Subdomain versucht. Im Screenshot sieht es gut aus. Aber für mich sieht das Log wieder gleich aus...

Derweil habe ich die neue Subdomain als local DNS in den PiHole eingetragen. Scheint zu funktionieren, da ich bei Eingabe der Domain auf dem Login des Unraid lande. 

Klicke ich nun auf die SOURCE URL meiner Domain ->https://192.168.0.125:4743 bekomme ich ein " Öffnen der Seite fehlgeschlagen"

*kopfkratz*

 

c.jpg

Edited by VK28.01
Link to comment

Hier die Audit Logs. Wird hier ein Fehler sichtbar?

 

{ "id": 7, "created_on": "2022-12-15 21:01:22", "modified_on": "2022-12-15 21:14:41", "owner_user_id": 1, "domain_names": [ "bit.meine.de" ], "forward_host": "192.168.0.125", "forward_port": 4743, "access_list_id": 0, "certificate_id": 7, "ssl_forced": true, "caching_enabled": false, "block_exploits": false, "advanced_config": "", "meta": { "letsencrypt_agree": false, "dns_challenge": false }, "allow_websocket_upgrade": false, "http2_support": true, "forward_scheme": "http", "enabled": 1, "locations": [], "hsts_enabled": true, "hsts_subdomains": true }

 

 

Im Log habe ich noch folgendes gefunden. Farbe weiß:

Duplicate relation "access_list" in a relation expression. You should use "a.[b, c]" instead of "[a.b, a.c]". This will cause an error in objection 2.0

Link to comment
On 12/14/2022 at 11:06 PM, Archonw said:

Ich hab auf meinem Pi diesen Weg genommen.

Ab 6:30 geht es los.

 


Mache es aber jetzt mittel Nginx Proxy Manager.
Geht einfacher und entsprechend abgesichert mit sicherem Password und 2FA habe ich auch für meinen privat genutzten keine Kopfschmerzen.
 

 

Danke. Fürchte, das hilft mir nicht so recht weiter. Hab eh schon das Gefühl mich in den diversen Spielarten zu verzetteln…

Link to comment
11 hours ago, VK28.01 said:

https://192.168.0.125:4743 bekomme ich ein " Öffnen der Seite fehlgeschlagen

In NPM hast du diese IP+Port als Ziel mit http eingetragen. Also ist das vermutlich der http Port des Ziels.

 

Ich sehe kein Problem. Zertifikat wurde erfolgreich authentifiziert. Welche IP hat denn deine Domain (ich hoffe mal die lokale von NPM) und welchen Port verwendest du (ich hoffe mal gar keinen). Setzt natürlich voraus, dass dein NPM auf Port 80 und 443 eingestellt ist.

Link to comment

Nginx.thumb.jpg.1dd01988b76763c7337c4a4bbf3a69e5.jpgIm NPM ist die bit.meinedomainbeinetcup.de als Source eingetragen und die 192.168.0.125:4743 als Destination.

 

1 hour ago, mgutt said:

Zertifikat wurde erfolgreich authentifiziert. Welche IP hat denn deine Domain (ich hoffe mal die lokale von NPM) und welchen Port verwendest du (ich hoffe mal gar keinen). Setzt natürlich voraus, dass dein NPM auf Port 80 und 443 eingestellt ist.

 

Bin mir nicht sicher, ob ich die Frage verstanden habe. Du meinst nicht die Ip der Domain bei Netcup, oder? Irgendwie beschleicht mich das Gefühl, einen Missing link zu haben...aber ich sehe nicht wo.

domain.jpg

Link to comment
Ich habe nun den Ngnix Prozess nochmal komplett mit einer anderen Domain bzw. Subdomain versucht. Im Screenshot sieht es gut aus. Aber für mich sieht das Log wieder gleich aus...
Derweil habe ich die neue Subdomain als local DNS in den PiHole eingetragen. Scheint zu funktionieren, da ich bei Eingabe der Domain auf dem Login des Unraid lande. 
Klicke ich nun auf die SOURCE URL meiner Domain ->https://192.168.0.125:4743 bekomme ich ein " Öffnen der Seite fehlgeschlagen"
*kopfkratz*
 
c.thumb.jpg.101c30afb07df949c0ce5e32d6dc6827.jpg
Wenn du deine local DNS aufrufst solltest du beim NPM laden und nicht bei der Unraid WEB-UI.
Auf welcher IP und welchem Port ist Unraid erreichbar und das gleiche für NPM?
Läuft NPM im.Bridge Mode muss die Unraid WebGui weg von Port 80 und 443. Das braucht dann nämlich NPM.
Link to comment
On 12/14/2022 at 11:06 PM, Archonw said:

Ich hab auf meinem Pi diesen Weg genommen.

Ab 6:30 geht es los.

 


Mache es aber jetzt mittel Nginx Proxy Manager.
Geht einfacher und entsprechend abgesichert mit sicherem Password und 2FA habe ich auch für meinen privat genutzten keine Kopfschmerzen.
 

 

Vielleicht darf ich mich mal eben kurz mit einklinken? Welche 2FA hast Du genommen bei Bitwarden?

Ich wollte mir eigentlich diesen Yubikey holen, aber da weiß ich nicht genau wie kompatibel das ganze ist.

Edited by speedycxd
Link to comment
1 hour ago, VK28.01 said:

Du meinst nicht die Ip der Domain bei Netcup, oder?

Natürlich. Du willst ja die Subdomain lokal mit https aufrufen ohne einen Port öffnen zu müssen. Entsprechend muss die Subdomain bei NetCup die lokale IP von NPM besitzen. Außerdem muss NPM auf den Ports 80 (http) und 443 (https) lauschen.

 

Hinweis: zb die Fritz!Box erlaubt es nicht, wenn eine Domain eine lokale IP besitzt. In dem Fall musst du diese unter Netzwerkeinstellungen DNS Rebind Schutz eintragen (es reicht die Hauptdomain, dann sind auch alle Subdomains freigeschaltet).

  • Like 1
Link to comment
1 hour ago, Archonw said:

Wenn du deine local DNS aufrufst solltest du beim NPM laden und nicht bei der Unraid WEB-UI.
Auf welcher IP und welchem Port ist Unraid erreichbar und das gleiche für NPM?
Läuft NPM im.Bridge Mode muss die Unraid WebGui weg von Port 80 und 443. Das braucht dann nämlich NPM.

Ja, genau das ist der Fall! Werde ich direkt mal testen...danke für den Hinweis

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.