Perché OpenVPN su Windows dice ca: un percorso senza virgolette, non un certificato guasto
Un percorso di Program Files senza virgolette si divide in più argomenti e l’analizzatore accusa l’opzione. Controllate le virgolette, la riga del client e la codifica.
OpenVPN non si avvia, e il messaggio di errore punta a una riga che sembra corretta: Unrecognized option or missing or extra parameter(s) in office.ovpn:42: ca. Il certificato non è cambiato, il file si apre in un editor e nulla del percorso sembra sbagliato. L’analizzatore non contesta il nome dell’opzione; contesta quanti argomenti sono arrivati con essa. Quattro controlli risolvono quasi ogni caso, e vale la pena eseguirli in ordine di costo.
Perché l’analizzatore accusa l’opzione
Ogni riga di configurazione viene divisa sugli spazi e sulle virgolette prima che qualsiasi opzione la veda. Un valore che contiene uno spazio arriva quindi come più argomenti se non è racchiuso, e l’opzione che possedeva la riga segnala la discrepanza. Su Windows la directory di installazione predefinita lo rende certo, perché C:\Program Files si trova in mezzo al percorso per costruzione. Il certificato non viene mai aperto in questo errore, quindi verificare se il file esiste non prova nulla di utile.
Il numero di riga segnalato è di solito giusto, e l’opzione segnalata è quella che ha consumato la riga. Quando l’opzione indicata è una che sapete di non aver mai scritto, leggete la riga sopra, perché una virgoletta persa in un blocco precedente sposta l’analisi. Così un blocco di certificato finisce per essere accusato del numero di argomenti.
ca C:\Program Files\OpenVPN\config\office-ca.crtMettete tra virgolette ogni percorso che contiene uno spazio
Una coppia di virgolette doppie attorno al valore è tutta la riparazione, e su Windows le barre oblique in avanti sono accettate, quindi l’escape non diventa mai parte del problema. Correggete ogni opzione di percorso nello stesso passaggio, perché l’analizzatore si ferma al primo errore e la successiva attende solo il prossimo riavvio. L’insieme di solito comprende ca, cert, key, tls-auth e auth-user-pass.
ca "C:/Program Files/OpenVPN/config/office-ca.crt"
cert "C:/Program Files/OpenVPN/config/office.crt"
key "C:/Program Files/OpenVPN/config/office.key"Una ricerca sul nome della directory trova ogni occorrenza più in fretta della lettura del file. Eseguitela prima di qualsiasi modifica, così l’elenco è completo:
Select-String -Path .\office.ovpn -Pattern 'Program Files'Spostare il profilo su un percorso senza spazi è un’alternativa valida, ed è valida solo se ogni percorso si sposta con esso. Un profilo migrato a metà riproduce lo stesso errore con un altro nome di file, cosa più difficile da notare perché il messaggio ora punta a un percorso appena creato. Scegliete un approccio e completatelo.
Recuperate la dichiarazione di modalità prima dei certificati
La seconda causa comune produce un messaggio diverso con lo stesso pomeriggio buttato. Un profilo client deve dichiarare la propria modalità vicino all’inizio, e quella dichiarazione si perde facilmente quando in un nuovo file si incollano solo i blocchi dei certificati. Senza di essa OpenVPN legge il file con un altro insieme di valori predefiniti, e il danno compare molto più tardi come conflitto tra opzioni o accesso non riuscito. La riga mancante costa poco da controllare e molto da dimenticare.
client
dev tun
proto udp
remote vpn.example.net 1194Tenete una direttiva per riga finché siete lì. Le righe unite producono esattamente l’errore di conteggio degli argomenti della prima sezione, e la riga segnalata sembra ragionevole perché l’unione è avvenuta dove l’editor ha spezzato il testo. Leggete la riga grezza, non quella visualizzata.
Il danno di codifica sembra un nome di opzione
Un file salvato come UTF-16, completo di marca di ordine dei byte, nasconde la sua prima opzione all’analizzatore, e byte vaganti possono attaccarsi al nome dell’opzione nel messaggio. Salvate il file come UTF-8 senza marca di ordine dei byte, poi riapritelo e confermate che il primo carattere è una lettera normale. Gli editor, la redirezione di PowerShell e il testo incollato da una finestra di chat cambiano tutti la codifica senza chiedere.
Format-Hex .\office.ovpn | Select-Object -First 1La marca di ordine dei byte appare come byte marcatore iniziali prima di qualsiasi testo, ed eliminare quei caratteri a mano è una mossa perdente perché l’editor li riscrive al salvataggio successivo. Risalvate invece il file con una codifica esplicita. I fine riga sono più tolleranti, ma un file senza nuova riga alla fine può ancora fondere l’ultima direttiva con la precedente dopo una modifica.
Quale controllo per primo, e perché
Iniziate dalla codifica, perché costa un comando e invalida ogni altra lettura del file. Poi le virgolette, quindi la dichiarazione di modalità e le altre direttive obbligatorie, e solo dopo i certificati, le chiavi e le credenziali. Lavorare in questo ordine tiene ogni passo reversibile, perché un certificato sostituito per correggere un problema di virgolette lascia un’installazione funzionante con un guasto nuovo a due modifiche dall’originale. L’ordine conta più dei singoli controlli.
Conservate una copia intatta del file così come l’operatore l’ha consegnato. Se una modifica successiva lo rompe, una differenza rispetto a quella copia mostra se si è spostata una virgoletta, una nuova riga o un byte di marca, il che è più rapido che rileggere l’errore. Il riferimento delle opzioni per ogni direttiva è nel manuale di OpenVPN della versione installata.