Невалидните тайни са проблем на контейнера, а не правило за паролата
Отхвърлените идентификационни данни може никога да не са стигнали до шлюза. Първо сравнете контейнера на входа, етапа на удостоверяване и самия профил.
Съобщението „невалидни тайни“ обикновено води до едно заключение: VPN не обича пунктуация. Това заключение обикновено е погрешно, защото съобщението често идва от локална обработка, преди който и да е шлюз да е погледнал профила. Два дизайна предават една и съща парола — графично поле и файл с идентификационни данни — и те се провалят на различни места. Сравнете контейнерите, преди да опростявате парола, която през цялото време е била наред.
Грешката идва преди шлюза
Локалната проверка, заключеното хранилище за тайни, липсващият агент и повреденият файл с идентификационни данни — всички те дават откази, които потребителят преживява като едно отхвърляне. Никое от тях не включва сървъра за удостоверяване. Собственото отхвърляне на шлюза е отделно събитие и обикновено пристига с различно съобщение и в различен момент. То се случва, след като има тунел и идентификационните данни са предадени.
Значи първият въпрос не е кои знаци са допустими, а къде е спрял опитът. Клиент, който никога не е отворил връзка, не е бил отхвърлен от никого. Запишете етапа, който сте наблюдавали, защото всяка следваща стъпка зависи от тази класификация.
Разграничението променя и кой го поправя. Проблемът с контейнера принадлежи на устройството и неговия собственик, докато отхвърлянето на профила принадлежи на този, който управлява системата за удостоверяване.
Сравнявайте контейнерите, а не знаците
Полето за парола в графичния интерфейс, записът в ключодържателя, файлът с идентификационни данни от два реда и тайната за автоматизация — всяко носи същата стойност в различна обвивка. Обвивката има свои правила и обикновено се чупят именно те. Стойността рядко е проблемът; преносът на стойността е. Дръжте двете идеи отделно и диагнозата ще стане по-кратка.
| 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 |
Клиентски опции на общността за OpenVPN 2.6 описват този файл от два реда за auth-user-pass, включително поведението, когато редът за паролата липсва: тогава клиентът пита вместо това. Тази единствена подробност обяснява цял клас оплаквания от типа „иска парола, която вече съм подал“. Тя ви казва също, че празният втори ред е значимо състояние, а не безобиден избор на форматиране.
Цитирането е отново отделен слой: кавичките в обикновен файл с идентификационни данни се съхраняват като данни, докато обвивката ги премахва, преди програмата да види каквото и да е. Същият знак е безобиден на едно място и структурен на друго. Таблицата не може да ви каже кой контейнер е използвал клиентът, затова прочетете собствената конфигурация на клиента, преди да изберете ред.
Прекъсванията на редове също са структурни. Файл с полета, разделени с редове, не може да носи стойност, съдържаща нов ред, и това е ограничение на формата, а не присъда за силата на паролата. Използвайте поддържания от внедряването механизъм за доставка, вместо да подрязвате тайната, за да пасне в импровизиран файл.
Създайте файла с идентификационни данни без щети от обвивката
Най-безопасният локален път държи тайната извън историята на обвивката и извън списъка с аргументи на процеса. Прочетете двете полета интерактивно, след което запишете двата реда, които клиентът очаква. Всичко останало може да остане в конфигурационен файл, който е лесен за преглед.
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
Първите две команди четат потребителското име и след това паролата, без да я показват, третата записва двата реда, четвъртата ограничава файла, а последната стартира клиента с този файл. Обърнете внимание, че read -r запазва обратните наклонени черти и това е точно онази подробност, която превръща работеща парола в неуспешна, когато се пропусне.
Избягвайте да създавате файла с променлива без кавички или с here-document, пълен с разгръщания на обвивката. И двете могат да преобразуват знаци, преди да стигнат до файла, и полученият отказ изглежда като отхвърляне от VPN, защото паролата на диска наистина е различна от паролата, която познавате. Ако подозирате това, сравнете дължината на файла в байтове с очакваната стойност, без да отпечатвате самата тайна. Разлика от един или два байта е подписът на инцидент с кавички.
Прочетете етапа от първата грешка
Запазете първото конкретно съобщение от един опит и след това го класифицирайте. Локална грешка при проверка, липсващ частен ключ, недостъпен агент за тайни и отказ при удостоверяване на шлюза са четири различни резултата с четири различни собственика. Само един от тях е за профила.
Ако шлюзът наистина отхвърля правилно предадени идентификационни данни, проверете профила, системата за удостоверяване и всяко изисквано предизвикателство с администратора. Общият отказ при удостоверяване не посочва забранен знак.
Възстановете одобрената стойност чрез правилния механизъм, вместо да я свеждате до букви и цифри. Политиката за пароли принадлежи на оператора и заобикаляне, което тихо я нарушава, не е поправка. То също скрива истинския дефект от следващия човек, който ще срещне същата грешка с по-слаба парола и без по-добра идея.