Pourquoi OpenVPN affiche ca sous Windows : un chemin sans guillemets, pas un mauvais certificat
Un chemin Program Files sans guillemets se divise en plusieurs arguments, et l’analyseur accuse l’option. Vérifiez les guillemets, la ligne du client et l’encodage.
OpenVPN ne démarre pas, et le message d’échec désigne une ligne qui semble correcte : Unrecognized option or missing or extra parameter(s) in office.ovpn:42: ca. Le certificat n’a pas changé, le fichier s’ouvre dans un éditeur, et rien dans le chemin ne semble anormal. L’analyseur ne conteste pas le nom de l’option ; il conteste le nombre d’arguments arrivés avec elle. Quatre vérifications règlent presque tous les cas, et elles valent la peine d’être faites par ordre de coût.
Pourquoi l’analyseur accuse l’option
Chaque ligne de configuration est découpée sur les espaces et sur les guillemets avant qu’une option ne la voie. Une valeur contenant un espace arrive donc en plusieurs arguments si elle n’est pas encadrée, et l’option propriétaire de la ligne signale l’écart. Sous Windows, le répertoire d’installation par défaut le rend certain, car C:\Program Files se trouve au milieu du chemin par construction. Le certificat n’est jamais ouvert dans cet échec, donc vérifier si le fichier existe ne prouve rien d’utile.
Le numéro de ligne signalé est généralement juste, et l’option signalée est celle qui a consommé la ligne. Quand l’option nommée est une que vous savez n’avoir jamais écrite, lisez la ligne au-dessus, car un guillemet perdu dans un bloc antérieur décale l’analyse. C’est ainsi qu’un bloc de certificat finit par être accusé du nombre d’arguments.
ca C:\Program Files\OpenVPN\config\office-ca.crtEntourez de guillemets chaque chemin contenant un espace
Une paire de guillemets doubles autour de la valeur constitue toute la réparation, et les barres obliques sont acceptées sous Windows, si bien que l’échappement ne fait jamais partie du problème. Corrigez chaque option de chemin dans la même passe, car l’analyseur s’arrête au premier échec et la suivante attend simplement le prochain redémarrage. L’ensemble comprend généralement ca, cert, key, tls-auth et 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"Une recherche sur le nom du répertoire trouve chaque occurrence plus vite que la lecture du fichier. Exécutez-la avant toute modification, pour que la liste soit complète :
Select-String -Path .\office.ovpn -Pattern 'Program Files'Déplacer le profil vers un chemin sans espaces est une alternative valable, et elle n’est valable que si chaque chemin suit. Un profil à moitié migré reproduit la même erreur avec un autre nom de fichier, ce qui est plus difficile à repérer parce que le message désigne maintenant un chemin que vous venez de créer. Choisissez une approche et terminez-la.
Récupérez la déclaration de mode avant les certificats
La deuxième cause courante produit un message différent avec le même après-midi perdu. Un profil client doit déclarer son mode près du début, et cette déclaration se perd facilement quand seuls les blocs de certificat sont collés dans un nouveau fichier. Sans elle, OpenVPN lit le fichier avec un autre jeu de valeurs par défaut, et le dégât apparaît bien plus tard sous forme de conflit entre options ou d’échec de connexion. La ligne manquante coûte peu à vérifier et cher à oublier.
client
dev tun
proto udp
remote vpn.example.net 1194Gardez une directive par ligne tant que vous y êtes. Les lignes fusionnées produisent exactement l’erreur de nombre d’arguments de la première section, et la ligne signalée paraît raisonnable parce que la fusion a eu lieu là où l’éditeur a coupé le texte. Lisez la ligne brute, pas la ligne affichée.
Un dégât d’encodage ressemble à un nom d’option
Un fichier enregistré en UTF-16, avec la marque d’ordre des octets, cache sa première option à l’analyseur, et des octets errants peuvent se coller au nom de l’option dans le message. Enregistrez le fichier en UTF-8 sans marque d’ordre des octets, rouvrez-le ensuite et confirmez que le premier caractère est une lettre normale. Les éditeurs, la redirection PowerShell et le texte collé depuis une fenêtre de discussion changent tous l’encodage sans demander.
Format-Hex .\office.ovpn | Select-Object -First 1La marque d’ordre des octets apparaît comme des octets de marque en tête avant tout texte, et supprimer ces caractères à la main est un mauvais pari car l’éditeur les réécrit à l’enregistrement suivant. Réenregistrez plutôt le fichier avec un encodage explicite. Les fins de ligne sont plus indulgentes, mais un fichier sans saut de ligne à la fin peut encore fusionner la dernière directive avec la précédente après une modification.
Quelle vérification d’abord, et pourquoi
Commencez par l’encodage, car il coûte une commande et invalide toute autre lecture du fichier. Puis les guillemets, ensuite la déclaration de mode et les autres directives obligatoires, et seulement après les certificats, les clés et les identifiants. Travailler dans cet ordre garde chaque étape réversible, car un certificat remplacé pour corriger un problème de guillemets laisse une installation fonctionnelle avec une nouvelle panne à deux modifications de l’original. L’ordre compte plus que les vérifications individuelles.
Conservez une copie intacte du fichier telle que l’opérateur l’a livrée. Si une modification ultérieure le casse, un diff avec cette copie montre si un guillemet, un saut de ligne ou un octet de marque a bougé, ce qui est plus rapide que relire l’erreur. La référence des options de chaque directive se trouve dans le manuel OpenVPN de la version installée.