Сканчэнне тэрміну дзеяння кукі ConnMan OpenConnect, а не праблема з сертыфікатам
Дзве адмовы выглядаюць у журнале аднолькава. Параўнайце замацаваны адбітак з кукі сеансу, абнавіце поле, тэрмін якога скончыўся, і перазапусціце дэман.
ConnMan працуе паўдня, а потым адмаўляе, і радок журнала згадвае праверку сертыфіката. Гэты радок накіроўвае людзей да набораў CA, якія ніколі не былі зламаныя. Дзве розныя непаладкі даюць амаль аднолькавую форму адмовы: сканчаецца тэрмін кукі сеансу або сертыфікат сервера сапраўды змяніўся. Іх можна адрозніць прыкладна за хвіліну, і толькі адна з іх наогул датычыцца адбітка.
Дзве непаладкі, адзін заблытаны радок журнала
Яны адрозніваюцца па двух назіраннях, і ні адно з іх не патрабуе другога прачытання. Першае — калі пачалася адмова: пратэрмінаванае кукі прыходзіць пасля гадзін або дзён працы, а заменены сертыфікат прыходзіць адразу пасля змены шлюза.
| Signal | Expired cookie | Changed certificate |
|---|---|---|
| When it started | after hours or days of working | right after a gateway change |
| Fingerprint from a fresh authenticate | unchanged | different value |
| Usual log tail | HTTP CONNECT 401 / unauthorized | signer not found / verify failed |
| Repair | replace the cookie, restart | re-pin deliberately, then restart |
Праверка за хвіліну — гэта запуск authenticate ніжэй. Параўнайце яго FINGERPRINT з OpenConnect.ServerCert у файле. Ідэнтычны адбітак з іншым COOKIE азначае, што трэба замяніць толькі кукі. Іншы адбітак азначае, што сертыфікат сервера сапраўды змяніўся, таму замацуйце яго свядома і запішыце, хто гэта ўхваліў.
Стварайце матэрыял, а не ўводзьце яго ўручную
У ConnMan няма кроку імпарту профілю OpenConnect, у адрозненне ад NetworkManager. Ён чытае файл забеспячэння, значэнні якога павінны быць створаны загадзя, і падтрымліваемы спосаб іх стварэння — рэжым authenticate у OpenConnect.
sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh \
--authenticate --user myuser vpn.example.comВывад друкуе чатыры значэнні: POST, COOKIE, HOST і FINGERPRINT. Адбітак з прэфіксам sha256: — гэта замацаванне сервера. Кукі — гэта артэфакт сеансу з тэрмінам жыцця, які вызначае шлюз. Стаўцеся да іх як да розных відаў сакрэтаў: у іх розныя тэрміны сканчэння, і чакаецца, што зменіцца толькі адзін.
Файл змяшчае абодва, і яны старэюць па-рознаму
Файл забеспячэння знаходзіцца ў /var/lib/connman-vpn/ і чытаецца для кожнага злучэння дэманам VPN, а не праграмай у сістэмным латку. Трымайце назву злучэння ў глабальным раздзеле, а падрабязнасці пратакола — у раздзеле пастаўшчыка.
[global]
Name = Company VPN
[provider_openconnect]
Type = OpenConnect
Name = Company Cisco VPN
Host = vpn.example.com
Domain = corp.example
OpenConnect.ServerCert = sha256:...
OpenConnect.Cookie = ...Выкарыстоўвайце імя хоста, якое партал сапраўды абслугоўвае. Чысты IP-адрас можа прайсці праверку сертыфіката і ўсё роўна не спрацаваць, бо прылада маршрутызуе па віртуальным хосце і чакае імя.
systemctl status connman-vpn --no-pager # is the daemon even installed and running
sudo systemctl restart connman-vpn # after the file edit
journalctl -u connman-vpn --since '1 hour ago' # after the connection attemptШто насамрэч паказвае журнал
Падказка ў сістэмным латку не скажа, якая ў вас непаладка. Журнал скажа, калі чытаць паслядоўнасць, а не першы трывожны радок. Састарэлае кукі звычайна паказвае, што перамовы TLS завяршыліся, а ўзровень HTTP пасля гэтага адхіліў запыт; менавіта таму словы пра сертыфікаты стаяць побач з адмовай у аўтарызацыі.
Параўнайце свежы authenticate са значэннямі ў файле. Калі адбітак супадае і адрозніваецца толькі кукі, адказ у вас ёсць, не кранаючы налад даверу.
Абнавіце поле, тэрмін якога скончыўся
Паўтарыце каманду authenticate, заменіце OpenConnect.Cookie і перазапусціце дэман. Не чапайце адбітак, калі толькі свежы вывад не паказвае іншае значэнне; у такім разе сертыфікат сервера сапраўды замянілі, і паўторнае замацаванне — гэта рашэнне, якое хтосьці павінен запісаць, а не ўставіць з паведамлення пра памылку.
Аўтаматызаваць абнаўленне разумна: невялікі скрыпт чытае пароль са стандартнага ўводу, запускае рэжым authenticate і перапісвае толькі радок кукі. Трымайце ўліковыя даныя па-за скрыптам і чытальнымі толькі для ўліковага запісу, які яго запускае, а перазапіс рабіце атамарным, каб няўдалы запуск не пакінуў паўзапісаны файл.
Калі абнаўленне патрэбнае кожныя некалькі гадзін, запішыце інтэрвал. Гэта ўласцівасць палітыкі сеансаў шлюза, і яна вырашае, ці аўтаматызаваць абнаўленне, ці прасіць даўжэйшы сеанс.