Leggi il nome dell’opzione alla lettera. Nomina una chiave, e la confusione inizia quando il file che viene sbloccato viene scambiato per l’account che viene autenticato. Incolla la password dell’account in quell’opzione e il client proverà ad aprire un file di chiave con essa, cosa che fallisce per motivi che non hanno nulla a che vedere con l’accesso VPN.

La parte confusa è che una singola connessione può legittimamente richiedere entrambi i segreti. L’autenticazione con certificato client può richiedere una chiave cifrata, e lo stesso gateway può comunque eseguire uno scambio di autenticazione utente dopo che il certificato è accettato. Nessuno dei due segreti soddisfa l’altra fase, e un guasto in uno assomiglia molto, dall’esterno, a un guasto nell’altro.

Due segreti, due compiti diversi

Leggi i ruoli come accesso al file rispetto all’ammissione alla rete. La password della chiave decifra la chiave privata PEM indicata in --sslkey perché il certificato client TLS possa essere presentato. Quella decifratura avviene localmente, dentro il processo del client, e la passphrase stessa non viaggia mai verso il gateway. Ciò che il gateway vede è il certificato e una firma fatta con la chiave. Il manuale di OpenConnect tiene --key-password accanto a --certificate e --sslkey, e nelle build che possono usare una chiave conservata in un TPM la stessa opzione porta invece la password della chiave radice di archiviazione.

La password dell’account è di natura diversa. Entra nello scambio di autenticazione: un modulo con nome utente e password, un token, un giro SAML o una qualche combinazione annunciata dal gateway. Alcuni deployment non la chiedono affatto quando il certificato è l’unico fattore, e altri la chiedono anche dopo un certificato, perché il certificato prova il dispositivo mentre l’account prova la persona.

Mescolare le due cose produce errori fuorvianti. Un gateway che rifiuta un accesso di solito segnala un guasto di autenticazione, mentre una passphrase di chiave sbagliata di solito fallisce prima, quando il livello TLS non riesce a leggere il file di chiave. Sono fasi diverse con correzioni diverse, e i nomi si somigliano abbastanza che le persone li scambiano e poi inseguono il log sbagliato. Nota quale richiesta è apparsa prima di cambiare qualsiasi impostazione, perché il testo della richiesta è la diagnosi più economica che hai.

Quando la password della chiave serve davvero

L’opzione ha senso solo quando c’è una chiave cifrata da sbloccare. Se ti connetti con nome utente e password e senza certificato client, --key-password non ha su cosa agire, e includerla non cambia nulla. Se ti connetti con --certificate e --sslkey, è il formato stesso del file di chiave a decidere se verrà chiesta una passphrase.

Entrambi i segreti in un solo comando sono comuni negli ambienti gestiti: un certificato di dispositivo in una chiave cifrata, più un accesso per utente. La sequenza corretta è lasciare che il client chieda la passphrase della chiave localmente, completare la stretta di mano del certificato e poi gestire separatamente la richiesta di account del gateway. Tentare di precompilare entrambi tramite un unico script riutilizzato è dove di solito inizia la confusione.

Una diagnosi utile è guardare quando avviene il guasto. Se il client si ferma prima che inizi qualsiasi autenticazione di rete, sospetta il file di chiave, il suo formato o la passphrase. Se la sessione TLS è stabilita e poi il gateway rifiuta l’utente, la chiave ha fatto il suo lavoro e il problema è lo scambio di account.

Tenere entrambi i segreti fuori dalla cronologia della shell

Gli argomenti della riga di comando sono leggibili da altri utenti locali tramite la tabella dei processi e vengono spesso catturati nella cronologia della shell, negli script e nelle trascrizioni di supporto. OpenConnect può leggere la password dell’account dall’input standard con --passwd-on-stdin, e la passphrase della chiave può arrivare da una richiesta interattiva o da un agente invece che da un argomento. Nessun meccanismo rende sicuro il segreto da solo, ma entrambi lo tengono fuori dai luoghi più esposti.

I file meritano la stessa cura. Uno script che scrive una passphrase in un file temporaneo dovrebbe crearlo con permessi restrittivi, eliminarlo all’uscita ed evitare directory leggibili da tutti. Una passphrase che sopravvive alla sessione in una directory temporanea è una copia che hai dimenticato di fare. Le variabili d’ambiente sono visibili ai processi figli e spesso finiscono riprodotte dagli strumenti di debug, quindi non sono un miglioramento gratuito rispetto agli argomenti.

L’output diagnostico è la fuga silenziosa. I log del client a verbosità più alta possono mostrare corpi delle richieste o valori delle opzioni, e una trascrizione del terminale copiata è facile da incollare in un ticket, quindi leggi l’output prima di condividerlo.

Un pulsante del desktop morto è un altro guasto

Una voce VPN del desktop che mostra un indicatore rotante e poi nulla di solito non è affatto un problema di autenticazione. Il pulsante appartiene a un gestore di rete, a un’applet del produttore o a un plugin che avvia OpenConnect per conto tuo, e un componente mancante o un profilo illeggibile possono produrre esattamente quel sintomo. Scopri quale processo avvia il pulsante e leggi il suo errore prima di toccare le credenziali.

È tentante allentare la verifica del certificato o disattivare un controllo quando l’interfaccia grafica rifiuta di connettersi. Questo trasforma un guasto di integrazione del client in un abbassamento di sicurezza e raramente risolve il problema di avvio. Mantieni intatta la verifica del server, conferma che il profilo punti al gateway previsto e controlla che l’helper atteso dall’interfaccia sia davvero installato.

Una breve lista separa i casi. Un guasto locale prima che parta qualsiasi pacchetto indica la chiave o l’installazione del client. Un rifiuto del gateway dopo la sessione TLS indica lo scambio di account. Un pulsante che non avvia mai il client indica l’integrazione con il desktop. Tre guasti diversi, uno dei quali è una password che stavi per incollare nella casella sbagliata.

Articoli correlati