Истекување на колачето во 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 и ја препишува само линијата на колачето. Држете ги акредитивите надвор од скриптата и читливи само за сметката што ја извршува, а препишувањето направете го атомско за да не остави неуспешно извршување половина напишана датотека.
Ако освежувањето е потребно на секои неколку часа, запишете го интервалот. Тоа е својство на политиката за сесии на портата и одлучува дали да се автоматизира освежувањето или да се побара подолга сесија.