ConnMan работи едно попладне и потоа одбива, а линијата во дневникот споменува проверка на сертификат. Таа линија ги испраќа луѓето кон CA пакети што никогаш не биле расипани. Два различни дефекти даваат речиси ист облик на неуспех: колачето на сесијата истекува или сертификатот на серверот навистина се сменил. Можат да се разликуваат за околу една минута, и само еден од нив воопшто го вклучува отпечатокот.

Два дефекти, една збунувачка линија во дневникот

Се разликуваат по две набљудувања и ниту едно не бара второ читање. Првото е кога започнал неуспехот: истечено колаче доаѓа по часови или денови работа, а заменет сертификат доаѓа веднаш по промена на портата.

SignalExpired cookieChanged certificate
When it startedafter hours or days of workingright after a gateway change
Fingerprint from a fresh authenticateunchangeddifferent value
Usual log tailHTTP CONNECT 401 / unauthorizedsigner not found / verify failed
Repairreplace the cookie, restartre-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 и ја препишува само линијата на колачето. Држете ги акредитивите надвор од скриптата и читливи само за сметката што ја извршува, а препишувањето направете го атомско за да не остави неуспешно извршување половина напишана датотека.

Ако освежувањето е потребно на секои неколку часа, запишете го интервалот. Тоа е својство на политиката за сесии на портата и одлучува дали да се автоматизира освежувањето или да се побара подолга сесија.

Поврзани статии