Die Meldung „ungültige Secrets“ führt meist zu einer Schlussfolgerung: Die VPN mag keine Sonderzeichen. Diese Schlussfolgerung ist meist falsch, denn die Meldung kommt oft aus der lokalen Verarbeitung, bevor irgendein Gateway das Konto angesehen hat. Zwei Entwürfe übergeben dasselbe Passwort, ein grafisches Feld und eine Datei mit Nachweisen, und sie scheitern an verschiedenen Stellen. Vergleichen Sie die Container, bevor Sie ein Passwort vereinfachen, das die ganze Zeit in Ordnung war.

Der Fehler kommt vor dem Gateway

Lokale Validierung, ein gesperrter Secret-Speicher, ein fehlender Agent und eine falsch aufgebaute Nachweisdatei erzeugen allesamt Fehler, die der Nutzer als eine einzige Ablehnung erlebt. Keiner davon betrifft den Authentifizierungsserver. Die Ablehnung des Gateways selbst ist ein eigenes Ereignis, und sie kommt meist mit einer anderen Meldung und zu einem anderen Zeitpunkt. Sie tritt auf, nachdem ein Tunnel besteht und Nachweise übertragen wurden.

Die erste Frage ist also nicht, welche Zeichen erlaubt sind, sondern wo der Versuch stehen geblieben ist. Ein Client, der nie eine Verbindung geöffnet hat, wurde von niemandem abgelehnt. Notieren Sie die beobachtete Stufe, denn jeder weitere Schritt hängt von dieser Einordnung ab.

Die Unterscheidung ändert auch, wer es repariert. Ein Containerproblem gehört dem Gerät und seinem Besitzer, eine Kontoablehnung dagegen demjenigen, der das Authentifizierungs-Backend betreibt.

Vergleichen Sie die Container, nicht die Zeichen

Ein grafisches Passwortfeld, ein Schlüsselbund-Eintrag, eine Nachweisdatei mit zwei Zeilen und ein Automatisierungs-Secret tragen jeweils denselben Wert in einem anderen Umschlag. Der Umschlag hat eigene Regeln, und genau diese Regeln brechen meist. Der Wert ist selten das Problem; der Transport des Werts ist es. Halten Sie die beiden Ideen getrennt, und die Diagnose wird kürzer.

Where the value stopsWhat you seeWhat you checkWho owns the fix
GUI field or managed profileA validation message before any connection opensThe selected authentication mode and whether the field holds the secret or the usernameThe device owner or the profile author
Keychain or secret agentA prompt that keeps reappearing, or an agent errorWhether the agent is unlocked and holds an entry for this profileThe user who owns the keychain
Two-line credential fileA prompt for a password that was already suppliedLine count, line order and whether a trailing newline is presentWhoever generated the file
Shell argument or environmentWorks interactively but fails in automationWhether the shell expanded, trimmed or logged the valueWhoever wrote the automation

Client-Optionen der OpenVPN-2.6-Community beschreiben diese zweizeilige Datei für auth-user-pass, einschließlich des Verhaltens, wenn die Passwortzeile fehlt: dann fragt der Client selbst nach. Dieses eine Detail erklärt eine ganze Klasse von Meldungen der Art „es fragt nach einem Passwort, das ich schon angegeben habe“. Es sagt Ihnen außerdem, dass eine leere zweite Zeile ein bedeutsamer Zustand ist und keine harmlose Formatierungswahl.

Das Quoting ist wieder eine eigene Ebene: Anführungszeichen in einer einfachen Nachweisdatei werden als Daten gespeichert, während eine Shell sie entfernt, bevor das Programm irgendetwas sieht. Dasselbe Zeichen ist an einer Stelle harmlos und an der anderen strukturell. Eine Tabelle kann Ihnen nicht sagen, welchen Container Ihr Client verwendet hat, daher lesen Sie die eigene Konfiguration des Clients, bevor Sie eine Zeile auswählen.

Auch Zeilenumbrüche sind strukturell. Eine Datei mit zeilengetrennten Feldern kann keinen Wert tragen, der einen Zeilenumbruch enthält, und das ist eine Grenze des Formats und kein Urteil über die Passwortstärke. Nutzen Sie den vom Deployment unterstützten Übertragungsweg, statt das Secret zurechtzustutzen, damit es in eine behelfsmäßige Datei passt.

Erstellen Sie die Nachweisdatei ohne Schäden durch die Shell

Der sicherste lokale Weg hält das Secret aus der Shell-Historie und aus der Argumentliste des Prozesses heraus. Lesen Sie beide Felder interaktiv und schreiben Sie dann die zwei Zeilen, die der Client erwartet. Alles andere kann in einer leicht prüfbaren Konfigurationsdatei bleiben.

read -r VPN_USER
read -rs VPN_PASS
printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS" > /etc/openvpn/client/creds
chmod 600 /etc/openvpn/client/creds
openvpn --config /etc/openvpn/client/office.conf --auth-user-pass /etc/openvpn/client/creds

Die ersten beiden Befehle lesen den Benutzernamen und dann das Passwort, ohne es anzuzeigen, der dritte schreibt beide Zeilen, der vierte beschränkt die Datei, und der letzte startet den Client mit dieser Datei. Beachten Sie, dass read -r Backslashes bewahrt, und genau das ist die Art Detail, die ein funktionierendes Passwort in ein scheiterndes verwandelt, wenn sie fehlt.

Vermeiden Sie es, die Datei mit einer nicht in Anführungszeichen gesetzten Variablen oder mit einem Here-Dokument voller Shell-Expansionen zu bauen. Beides kann Zeichen verändern, bevor sie die Datei erreichen, und der resultierende Fehler sieht wie eine VPN-Ablehnung aus, weil das Passwort auf der Platte tatsächlich anders ist als das, das Sie kennen. Wenn Sie das vermuten, vergleichen Sie die Bytelänge der Datei mit dem erwarteten Wert, ohne das Secret selbst auszugeben. Eine Abweichung von einem oder zwei Bytes ist die Signatur eines Quoting-Unfalls.

Lesen Sie die Stufe am ersten Fehler ab

Behalten Sie die erste konkrete Meldung eines Versuchs und ordnen Sie sie dann ein. Ein lokaler Validierungsfehler, ein fehlender privater Schlüssel, ein nicht verfügbarer Secret-Agent und ein Authentifizierungsfehler am Gateway sind vier verschiedene Ergebnisse mit vier verschiedenen Zuständigkeiten. Nur eines davon betrifft das Konto.

Wenn das Gateway tatsächlich einen korrekt übergebenen Nachweis ablehnt, prüfen Sie das Konto, das Authentifizierungs-Backend und jede erforderliche Challenge mit dem Administrator. Ein allgemeiner Authentifizierungsfehler nennt kein verbotenes Zeichen.

Stellen Sie den genehmigten Wert über den richtigen Mechanismus wieder her, statt ihn auf Buchstaben und Ziffern zu reduzieren. Die Passwortrichtlinie gehört dem Betreiber, und eine Umgehung, die sie still aushebelt, ist keine Reparatur. Sie verbirgt außerdem den eigentlichen Defekt vor der nächsten Person, die denselben Fehler mit einem schwächeren Passwort und ohne bessere Idee erleben wird.

Ähnliche Artikel