OpenVPN client-config-dir: Dateiname gegen Zertifikats-CN
Der CCD-Dateiname stammt aus dem Common Name des Zertifikats oder aus dem Benutzernamen, wenn diese Zuordnung aktiv ist. Vergleichen Sie beide Regeln, bevor Sie eine Datei umbenennen.
Zwei Namen sind im Spiel, bevor sich ein Client überhaupt verbindet: der Dateiname auf dem Laptop (nuc.ovpn) und die Identität, die der Server aus dem Nachweis ableitet. Eine client-config-dir-Suche verwendet die zweite. Den Profilnamen auf dem Client zu ändern oder .conf an die Serverdatei anzuhängen, ändert nichts daran, welche Datei der Server öffnet.
Der nützliche Vergleich ist nicht „welchen Namen habe ich verwendet“, sondern „welche Regel wendet der Server an“, denn Zertifikatsauthentifizierung und Benutzername/Passwort-Authentifizierung können aus demselben Login unterschiedliche effektive Namen erzeugen.
Profilname gegen Common Name des Zertifikats
In der standardmäßigen zertifikatsbasierten Einrichtung nimmt der Server den X.509-Common-Name und sucht innerhalb von client-config-dir nach einer Datei mit genau diesem Namen. Ein Profil namens nuc.ovpn, dessen Zertifikat tester sagt, wird zu /etc/openvpn/server/ccd/tester. Der Name der Clientdatei geht nie in die Berechnung ein. Das ist die erste Stelle, an der sich eine Abweichung versteckt.
Ein Verzeichnis voller sorgfältig benannter Profile kann daher jedes Mal danebengreifen. Die Datei wird nicht nach Subject, nicht nach E-Mail-Adresse und nicht nach dem in einer GUI angezeigten Namen abgeglichen, sondern nach der Zeichenkette des Common Name.
Auf einem Dateisystem, das Groß- und Kleinschreibung unterscheidet, sind Tester und tester zwei verschiedene Dateien, und nur eine wird jemals geöffnet. Prüfen Sie den Common Name aus dem Zertifikat, das der Client tatsächlich vorlegt, nicht aus einer Kopie in Ihren Notizen.
username-as-common-name kehrt die Regel um
Läuft auf dem Server eine Benutzername/Passwort-Authentifizierung mit username-as-common-name, ersetzt der authentifizierte Benutzername für diese Suche den Common Name des Zertifikats.
Vergleichen Sie beide Fälle direkt: Bei Zertifikatsidentität folgt die Datei dem Zertifikat, und eine Passwortänderung ist irrelevant; bei Benutzernamenidentität folgt die Datei dem Anmeldenamen, und eine Neuausstellung des Zertifikats ist irrelevant. Das Feld, das der Server ersetzt, ist das, gegen das umbenannt werden muss. Ein neu ausgestelltes Zertifikat mit neuem CN ändert das Suchziel stillschweigend, und die alte CCD-Datei bleibt auf der Platte liegen und sieht korrekt aus.
Es gibt gemischte Konfigurationen, und dort beginnt der meiste Wirrwarr. Wenn ein Dienstblock die Ersetzung aktiviert und ein anderer nicht, hängt der effektive Name davon ab, welche Instanz die Verbindung bearbeitet hat. Bestätigen Sie die aktive Konfiguration, statt anzunehmen, die globale Datei gelte. Die ursprüngliche Server-Options-Referenz dokumentiert die Suche nach der benannten Datei und den optionalen Rückfall.
Was der Server liest und was er stillschweigend überspringt
Zwei kleine Unterschiede entscheiden, ob eine Datei ausgewählt wird. Der erste ist eine angehängte Erweiterung. Der zweite ist ein verirrtes Zeichen im Namen.
OpenVPN hängt .conf nicht an den gesuchten Namen an, daher passt tester.conf nicht zu tester. Ein Editor, der Erweiterungen ausblendet, kann eine Datei hinterlassen, die in einer Liste richtig aussieht und nie passt.
Existiert keine passende Datei, kann der Server auf eine Datei namens DEFAULT zurückfallen. Dass einige Einstellungen ankommen, ist daher kein Beweis, dass die Datei pro Client verwendet wurde. Vergleichen Sie die zugewiesene Adresse oder die gepushten Routen mit dem, was die Datei pro Client erzeugen würde. Berechtigungen sind der dritte Filter, denn der Server öffnet die Datei, nachdem er Privilegien abgegeben hat; eine Root-Shell, die sie lesen kann, beweist nichts.
Ein korrekter Dateiname validiert den Inhalt nicht
Auswahl und Inhalt sind getrennte Fehler. Sobald die richtige Datei geöffnet ist, müssen ihre Direktiven für diesen Client weiterhin gültig sein.
ifconfig-push muss eine Adresse zuweisen, die die Topologie tatsächlich nutzen kann, und iroute ergibt nur für ein geroutetes Subnetz hinter diesem Client Sinn.
Eine Identität, mehrere Geräte
Zwei Laptops, die denselben Common Name vorlegen, wählen dieselbe Datei und erhalten dieselben clientbezogenen Einstellungen. Wenn Sie getrennte Adressen oder eine getrennte Sperrung brauchen, brauchen Sie getrennte Identitäten, nicht zwei Kopien einer Datei.
Der Vergleich steht zwischen dem Teilen einer Identität und dem Ausstellen eines Zertifikats pro Gerät. Teilen ist einfacher zu verwalten und grober zu sperren, während Zertifikate pro Gerät mehr Einrichtung kosten und Ihnen eine saubere Einheit zum Deaktivieren geben.