Съобщението „невалидни тайни“ обикновено води до едно заключение: VPN не обича пунктуация. Това заключение обикновено е погрешно, защото съобщението често идва от локална обработка, преди който и да е шлюз да е погледнал профила. Два дизайна предават една и съща парола — графично поле и файл с идентификационни данни — и те се провалят на различни места. Сравнете контейнерите, преди да опростявате парола, която през цялото време е била наред.

Грешката идва преди шлюза

Локалната проверка, заключеното хранилище за тайни, липсващият агент и повреденият файл с идентификационни данни — всички те дават откази, които потребителят преживява като едно отхвърляне. Никое от тях не включва сървъра за удостоверяване. Собственото отхвърляне на шлюза е отделно събитие и обикновено пристига с различно съобщение и в различен момент. То се случва, след като има тунел и идентификационните данни са предадени.

Значи първият въпрос не е кои знаци са допустими, а къде е спрял опитът. Клиент, който никога не е отворил връзка, не е бил отхвърлен от никого. Запишете етапа, който сте наблюдавали, защото всяка следваща стъпка зависи от тази класификация.

Разграничението променя и кой го поправя. Проблемът с контейнера принадлежи на устройството и неговия собственик, докато отхвърлянето на профила принадлежи на този, който управлява системата за удостоверяване.

Сравнявайте контейнерите, а не знаците

Полето за парола в графичния интерфейс, записът в ключодържателя, файлът с идентификационни данни от два реда и тайната за автоматизация — всяко носи същата стойност в различна обвивка. Обвивката има свои правила и обикновено се чупят именно те. Стойността рядко е проблемът; преносът на стойността е. Дръжте двете идеи отделно и диагнозата ще стане по-кратка.

Where the value stopsWhat you seeWhat you checkWho owns the fix
GUI field or managed profileA validation message before any connection opensThe selected authentication mode and whether the field holds the secret or the usernameThe device owner or the profile author
Keychain or secret agentA prompt that keeps reappearing, or an agent errorWhether the agent is unlocked and holds an entry for this profileThe user who owns the keychain
Two-line credential fileA prompt for a password that was already suppliedLine count, line order and whether a trailing newline is presentWhoever generated the file
Shell argument or environmentWorks interactively but fails in automationWhether the shell expanded, trimmed or logged the valueWhoever 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, защото паролата на диска наистина е различна от паролата, която познавате. Ако подозирате това, сравнете дължината на файла в байтове с очакваната стойност, без да отпечатвате самата тайна. Разлика от един или два байта е подписът на инцидент с кавички.

Прочетете етапа от първата грешка

Запазете първото конкретно съобщение от един опит и след това го класифицирайте. Локална грешка при проверка, липсващ частен ключ, недостъпен агент за тайни и отказ при удостоверяване на шлюза са четири различни резултата с четири различни собственика. Само един от тях е за профила.

Ако шлюзът наистина отхвърля правилно предадени идентификационни данни, проверете профила, системата за удостоверяване и всяко изисквано предизвикателство с администратора. Общият отказ при удостоверяване не посочва забранен знак.

Възстановете одобрената стойност чрез правилния механизъм, вместо да я свеждате до букви и цифри. Политиката за пароли принадлежи на оператора и заобикаляне, което тихо я нарушава, не е поправка. То също скрива истинския дефект от следващия човек, който ще срещне същата грешка с по-слаба парола и без по-добра идея.

Подобни статии