I segreti non validi sono un problema di contenitore, non una regola sulle password
Campo grafico, portachiavi, file di credenziali o ambiente: la stessa password passa in buste diverse. Individua dove si è fermato il tentativo prima di semplificare la password.
Vedere «invalid secrets» produce di solito una sola conclusione: alla VPN non piacciono i segni di punteggiatura. Quella conclusione è di solito sbagliata, perché il messaggio arriva spesso dalla gestione locale prima che un gateway abbia guardato l’account. Due progetti consegnano la stessa password, un campo grafico e un file di credenziali, e falliscono in punti diversi. Confronta i contenitori prima di semplificare una password che andava bene da sempre.
L’errore arriva prima del gateway
La validazione locale, un archivio di segreti bloccato, un agente mancante e un file di credenziali malformato producono tutti errori che l’utente vive come un unico rifiuto. Nessuno di essi coinvolge il server di autenticazione. Il rifiuto del gateway è un evento distinto e di solito arriva con un messaggio diverso e una tempistica diversa. Avviene dopo che esiste un tunnel e le credenziali sono state trasmesse.
Quindi la prima domanda non è quali caratteri siano leciti ma dove si è fermato il tentativo. Un client che non ha mai aperto una connessione non è stato rifiutato da nessuno. Annota la fase che hai osservato, perché ogni passo successivo dipende da quella classificazione.
La distinzione cambia anche chi ripara. Un problema di contenitore appartiene al dispositivo e al suo proprietario, mentre un rifiuto dell’account appartiene a chi gestisce il backend di autenticazione.
Confronta i contenitori, non i caratteri
Un campo password grafico, una voce del portachiavi, un file di credenziali su due righe e un segreto per l’automazione trasportano ciascuno lo stesso valore in una busta diversa. La busta ha le sue regole, e sono quelle regole a rompersi di solito. Il valore è raramente il problema; lo è il trasporto del valore. Tieni separate le due idee e la diagnosi diventa più corta.
| Where the value stops | What you see | What you check | Who owns the fix |
|---|---|---|---|
| GUI field or managed profile | A validation message before any connection opens | The selected authentication mode and whether the field holds the secret or the username | The device owner or the profile author |
| Keychain or secret agent | A prompt that keeps reappearing, or an agent error | Whether the agent is unlocked and holds an entry for this profile | The user who owns the keychain |
| Two-line credential file | A prompt for a password that was already supplied | Line count, line order and whether a trailing newline is present | Whoever generated the file |
| Shell argument or environment | Works interactively but fails in automation | Whether the shell expanded, trimmed or logged the value | Whoever wrote the automation |
Le opzioni client di Community OpenVPN 2.6 descrivono quel file su due righe per auth-user-pass, incluso il comportamento quando la riga della password è assente: il client chiede invece. Quel singolo dettaglio spiega una classe di segnalazioni «chiede una password che ho già fornito». Ti dice anche che una seconda riga vuota è uno stato significativo e non una scelta di formattazione innocua.
Le virgolette sono un altro livello: le virgolette dentro un file di credenziali semplice vengono salvate come dati, mentre una shell le rimuove prima che il programma veda qualcosa. Lo stesso carattere è innocuo in un posto e strutturale nell’altro. Una tabella non può dirti quale contenitore ha usato il tuo client, quindi leggi la configurazione del client prima di scegliere una riga.
Anche le interruzioni di riga sono strutturali. Un file con campi delimitati da righe non può trasportare un valore che contiene un newline, e questo è un limite del formato, non un giudizio sulla robustezza della password. Usa il meccanismo di consegna supportato dalla distribuzione invece di tagliare il segreto per adattarlo a un file improvvisato.
Costruisci il file di credenziali senza danni della shell
La via locale più sicura tiene il segreto fuori dalla cronologia della shell e dall’elenco degli argomenti del processo. Leggi entrambi i campi in modo interattivo, poi scrivi le due righe che il client si aspetta. Tutto il resto può restare in un file di configurazione facile da rivedere.
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
I primi due comandi leggono il nome utente e poi la password senza mostrarla, il terzo scrive entrambe le righe, il quarto limita il file e l’ultimo avvia il client con quel file. Nota che read -r conserva le barre rovesciate, ed è esattamente il tipo di dettaglio che trasforma una password funzionante in una che fallisce quando lo si omette.
Evita di costruire il file con una variabile non quotata o con un here-document pieno di espansioni della shell. Entrambi possono trasformare i caratteri prima che raggiungano il file, e il guasto risultante sembra un rifiuto della VPN perché la password su disco è davvero diversa da quella che conosci. Confronta la lunghezza in byte del file con il valore atteso se sospetti questo, senza stampare il segreto. Una differenza di uno o due byte è la firma di un incidente di quotatura.
Leggi la fase dal primo errore
Conserva il primo messaggio specifico di un tentativo, poi classificalo. Un errore di validazione locale, una chiave privata mancante, un agente dei segreti non disponibile e un fallimento di autenticazione del gateway sono quattro risultati diversi con quattro proprietari diversi. Solo uno di essi riguarda l’account.
Se il gateway sta davvero rifiutando una credenziale consegnata correttamente, controlla l’account, il backend di autenticazione e ogni challenge richiesta con l’amministratore. Un fallimento di autenticazione generico non nomina un carattere proibito.
Ripristina il valore approvato con il meccanismo corretto invece di ridurlo a lettere e cifre. La politica delle password appartiene all’operatore, e un aggiramento che la vanifica in silenzio non è una correzione. Nasconde anche il difetto reale alla persona successiva, che incontrerà lo stesso errore con una password più debole e nessuna idea migliore.