Чаму OpenVPN у Windows кажа ca: шлях без лапак, а не дрэнны сертыфікат
Шлях Program Files без лапак разбіваецца на некалькі аргументаў, і парсер вінаваціць опцыю. Праверце лапкі, радок кліента і кадаванне.
OpenVPN не запускаецца, а паведамленне пра памылку паказвае на радок, які выглядае цалкам правільным: Unrecognized option or missing or extra parameter(s) in office.ovpn:42: ca. Сертыфікат не змяніўся, файл адкрываецца ў рэдактары, і нішто ў шляху не выглядае няправільным. Парсер не пярэчыць супраць назвы опцыі; ён пярэчыць супраць таго, колькі аргументаў прыйшло разам з ёй. Чатыры праверкі вырашаюць амаль кожны такі выпадак, і іх варта выконваць у парадку кошту.
Чаму парсер вінаваціць опцыю
Кожны радок канфігурацыі разбіваецца па прабелах і па лапках яшчэ да таго, як яго ўбачыць любая опцыя. Таму значэнне, якое змяшчае прабел, прыходзіць як некалькі аргументаў, калі яно не ўзятае ў лапкі, а опцыя, якой належыў радок, паведамляе пра неадпаведнасць. У Windows стандартны каталог усталявання робіць гэта пэўным, бо C:\Program Files па самай канструкцыі стаіць пасярэдзіне шляху. Сертыфікат у гэтай памылцы ніколі не адкрываецца, таму праверка існавання файла нічога карыснага не даказвае.
Паказаны нумар радка звычайна правільны, і паказаная опцыя — тая, што спажыла радок. Калі названая опцыя — тая, якую вы дакладна ніколі не пісалі, прачытайце радок вышэй, бо страчаная лапка ўнутры папярэдняга блока зрушвае разбор. Так блок сертыфіката ў выніку атрымлівае віну за колькасць аргументаў.
ca C:\Program Files\OpenVPN\config\office-ca.crtБярыце ў лапкі кожны шлях з прабелам
Адна пара двайных лапак вакол значэння — гэта ўвесь рамонт, а прамыя скосы ў Windows дазволеныя, таму экранаванне ніколі не становіцца часткай праблемы. Выпраўце ўсе опцыі шляхоў за адзін праход, бо парсер спыняецца на першай няўдачы, а наступная проста чакае наступнага перазапуску. Набор звычайна ўключае ca, cert, key, tls-auth і 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"Пошук па назве каталога знаходзіць кожнае ўпамінанне хутчэй, чым чытанне файла. Запусціце яго да любых праўленняў, каб спіс быў поўным:
Select-String -Path .\office.ovpn -Pattern 'Program Files'Перанос профілю ў шлях без прабелаў — слушная альтэрнатыва, і яна слушная толькі калі кожны шлях пераносіцца разам з ім. Напаўперанесены профіль узнаўляе тую ж памылку з іншай назвай файла, і гэта цяжэй заўважыць, бо паведамленне цяпер паказвае на шлях, які вы толькі што стварылі. Выберыце адзін падыход і давядзіце яго да канца.
Аднавіце аб’яву рэжыму раней за сертыфікаты
Другая распаўсюджаная прычына дае іншае паведамленне з тым жа марна страчаным паўднём. Профіль кліента павінен аб’явіць свой рэжым бліжэй да пачатку, і гэтую аб’яву лёгка страціць, калі ў новы файл устаўляюць толькі блокі сертыфікатаў. Без яе OpenVPN чытае файл з іншым наборам прадвызначаных значэнняў, і шкода выяўляецца значна пазней як канфлікт паміж опцыямі або няўдача ўваходу. Адсутны радок танны для праверкі і дарагі для забыцця.
client
dev tun
proto udp
remote vpn.example.net 1194Пакідайце адну дырэктыву на радок, пакуль вы там. Злепленыя радкі даюць менавіта памылку колькасці аргументаў з першага раздзела, і паказаны радок выглядае разумна, бо злепванне адбылося там, дзе рэдактар перанес тэкст. Чытайце сыры радок, а не адлюстраваны.
Пашкоджанне кадавання выглядае як назва опцыі
Файл, захаваны як UTF-16 з маркерам парадку байтаў, хавае сваю першую опцыю ад парсера, а выпадковыя байты могуць прыліпнуць да назвы опцыі ў паведамленні. Захавайце файл як UTF-8 без маркера парадку байтаў, потым адкрыйце яго зноў і пераканайцеся, што першы сімвал — звычайная літара. Рэдактары, перанакіраванне PowerShell і тэкст, устаўлены з акна чата, мяняюць кадаванне без пытання.
Format-Hex .\office.ovpn | Select-Object -First 1Маркер парадку байтаў паказваецца як правадныя байты маркера перад любым тэкстам, і выдаляць гэтыя сімвалы ўручную — марная справа, бо рэдактар запіша іх назад пры наступным захаванні. Захавайце файл зноў з яўным кадаваннем. Канцы радкоў больш паблажлівыя, але файл без новага радка ў канцы ўсё яшчэ можа зліць апошнюю дырэктыву з папярэдняй пасля праўлення.
Якую праверку выконваць першай і чаму
Пачніце з кадавання, бо яно каштуе адну каманду і анулюе любое іншае чытанне файла. Потым лапкі, потым аб’ява рэжыму і іншыя абавязковыя дырэктывы, і толькі пасля іх сертыфікаты, ключы і ўліковыя даныя. Праца ў такім парадку захоўвае кожны крок зваротным, бо сертыфікат, заменены дзеля выпраўлення праблемы з лапкамі, пакідае працоўную ўстаноўку з новай няўдачай за два праўленні ад зыходнай. Парадак важнейшы за асобныя праверкі.
Трымайце некранутую копію файла ў такім выглядзе, у якім яго аддаў аператар. Калі пазнейшае праўленне зламае яго, параўнанне з гэтай копіяй пакажа, ці зрушылася лапка, новы радок або байт маркера, і гэта хутчэй, чым перачытваць памылку. Даведка па опцыях для кожнай дырэктывы ёсць у кіраўніцтве OpenVPN для ўсталяванай версіі.