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

Прочетете провала, преди да промените каквато и да е настройка за доверие

Грешка от вида „липсващ подписващ“ означава, че веригата свършва в нещо, което клиентът не приема. Това може да е подновен сертификат от вътрешен орган, замяна от публичен, или устройство по средата, представящо собствения си сертификат. Само формулировката не може да различи тези случаи, затова погледнете издателя, преди да решите.

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

Запишете версията на клиента в същата бележка. Голяма част от провалите, които изглеждат проблеми с доверието, идват от по-стар клиент, срещащ по-нов обмен на шлюза.

Изберете между доверие на издателя и закрепване на един ключ

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

ApproachGood fitWhat breaks it
Trust the issuing CA with --cafileInternal PKI you can obtain over an already trusted channelCA rotation, or a client that still falls back to public roots
Pin one key with --servercertNo CA relationship, or exactly one key should ever be acceptedAny reissue that generates a new key pair

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

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

Поставете стойността в командата, която наистина стартирате

Закрепването пътува в опция за сертификат на сървъра и префиксът ѝ решава кодирането: шестнадесетични хешове на публичен ключ под sha1 или sha256, и base64 закрепване на ключ под pin-sha256. Подаването му също изключва системното доверие за това изпълнение, така че закрепеният ключ става цялото решение.

sudo openconnect --protocol=gp vpn.example.com --user alice \
  --servercert pin-sha256:AbCdEf...   # single key pin
sudo openconnect vpn.example.com --cafile /etc/ssl/internal-ca.pem --no-system-trust

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

Десктоп стартерите и добавката NetworkManager пазят собствено копие на аргументите за връзка. Скрипт, редактиран на диска, не достига до профил, импортиран по-рано, така че запазената стойност продължава да печели.

Боравете с превключване, без да се заключите навън

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

Напишете датата на промяната до закрепването. Закрепване без дата за преглед е бъдещ престой, носещ объркващо съобщение за грешка.

Изключете версията на клиента, преди да редактирате доверието

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

openconnect --version

След поправката проверете две неща, а не едно: порталът се зарежда през тунела и обикновен вътрешен адрес отговаря. Завършеното ръкостискане доказва само, че решението за доверие е прието.

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