mTLS - Grundsatzfragen

DFFVB

Rear Admiral
Registriert
Dez. 2015
Beiträge
5.602
Hallo zusammen, bin kürzlich über mTLS gestolpert und finde es ganz interessant. Weil es mE ein guter Kompromiss zwischen Server aus dem Heimnetz ins Internet stellen und VPN sein kann. Allerdings scheint es zu dem Thema nicht besonders viele Tutorials zu geben, bzw. bspw. bei Smallstep sind hier eher klassische Server addressiert und als Clients Nginx Proxy Manager (NPM), statt bspw. mobile Clients.

Nach meiner Rechnung wäre der Aufbau im Heimnetz ungefähr wie folgt:

Debian > Docker (Compose) > NPM > Heimdienste (Plex, FileServer etc.)

Bei der NPM Config müsste mTLS konfiguriert werden. Das mit der Maßgabe, dass Clients auch ein Zertifikat präsentieren müssen. Zertifikate werden mit mkcert erstellt. Root CA müssen in die entsprechenden Trust Stores der Client Devices. Alternative: Wenn man es nicht mit einer eigenen CA, sondern bspw. einer öffentlichen wie von o.g. Smallstep macht, dann spart man sich, das hinzufügen zu den Truststores?

Problem: Man muss dann dem ACME beibringen mit der CA von Smallstep zu kommunizieren, dass das Ding unbeaufsichtigt laufen kann.

Mir gehts in erster Linie um das Verstehen - bevor man sowas live schaltet, muss man sich natürlich entsprechend einarbeiten in das Thema! Dazu kommt, dass das ja für mobile Clients wahrscheinlich auch nur bedingt hilfreich ist, weil die einzelnen Apps (mit Ausnahme von bspw. HomeAssistant), das gar nicht unterstützen, man ist stark auf den Browser angewiesen, was die Nutuzbarkeit einschränkt....
 
Wichtig zu verstehen bei mTLS ist, du musst zum Ausstellen der Client- und Serverzertifikate nicht dieselbe (Root) CA benutzen. Kenne ich auch eher nicht mit demselben RootCA, außer im Heimbereich, weil da gerne Tutorials genutzt werden, die das der Einfachheit halber so machen.

Die Clients brauchen am Ende das RootCA, mit dem die Serverzertifikate ausgestellt wurden (im "Truststore") und ihr Clientzertifikat+privater Schlüssel (im "Keystore").
Für die Server gilt es genau andersherum. Die brauchen ihr Serverzertifikat+privater Schlüssel (im "Keystore") und das RootCA, mit dem die Clientzertifikate ausgestellt wurden (im "Truststore").

Falls du mit Intermediates arbeitest, gehören die immer zu der Seite, die das Endzertifikat (Server/Client) vorzeigt. Je nach Tool muss man Intermediates gesondert versorgen oder als Kette mit dem Endzertifikat verpacken.

Öffentliche Zertifikatsaussteller, wie Let's Encrypt etc., stellen eher nur Serverzertifikate aus, aber keine Clientzertifikate (Key Usage/Extended Key Usage).
 
  • Gefällt mir
Reaktionen: DFFVB
Zurück
Oben