ConnMan deluje popoldne in nato zavrne, vrstica v dnevniku pa omeni preverjanje potrdila. Ta vrstica pošilja ljudi k paketom CA, ki nikoli niso bili pokvarjeni. Dve različni napaki dasta skoraj enako obliko neuspeha: poteče piškotek seje ali pa se je potrdilo strežnika res spremenilo. Ločiti jih je mogoče v približno minuti, in samo ena od njiju se sploh tiče prstnega odtisa.

Dve napaki, ena zmedena vrstica dnevnika

Ločita se po dveh opažanjih in nobeno ne zahteva drugega branja. Prvo je, kdaj se je napaka začela: potekel piškotek pride po urah ali dneh delovanja, zamenjano potrdilo pride takoj po spremembi prehoda.

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

Preizkus v eni minuti je spodnji zagon authenticate. Primerjajte njegov FINGERPRINT s OpenConnect.ServerCert v datoteki. Enak prstni odtis z drugim COOKIE pomeni zamenjati samo piškotek. Drugačen prstni odtis pomeni, da se je potrdilo strežnika res spremenilo, zato ga namerno znova pripnite in zabeležite, kdo je to odobril.

Ustvarite gradivo, namesto da ga tipkate

ConnMan nima koraka za uvoz profila OpenConnect, za razliko od NetworkManagera. Bere datoteko za oskrbo, katere vrednosti je treba ustvariti vnaprej, podprt način za njihovo ustvarjanje pa je način authenticate v OpenConnectu.

sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh \
  --authenticate --user myuser vpn.example.com

Izhod natisne štiri vrednosti: POST, COOKIE, HOST in FINGERPRINT. Prstni odtis s predpono sha256: je pripenjanje strežnika. Piškotek je artefakt seje z življenjsko dobo, ki jo določi prehod. Obravnavajte ju kot različni vrsti skrivnosti: potekata po različnih urnikih in pričakuje se, da se spremeni samo eden.

Datoteka nosi oba in starata se različno

Datoteka za oskrbo je v /var/lib/connman-vpn/ in jo za vsako povezavo bere demon VPN, ne program v sistemski pladnji. Ime povezave hranite v globalnem razdelku, podrobnosti protokola pa v razdelku ponudnika.

[global]
Name = Company VPN

[provider_openconnect]
Type = OpenConnect
Name = Company Cisco VPN
Host = vpn.example.com
Domain = corp.example
OpenConnect.ServerCert = sha256:...
OpenConnect.Cookie = ...

Uporabite ime gostitelja, ki ga portal v resnici streže. Goli naslov IP lahko prestane preverjanje potrdila in vseeno ne uspe, ker naprava usmerja po navideznem gostitelju in pričakuje ime.

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

Kaj dnevnik v resnici pokaže

Namig v pladnju ne bo povedal, katera napaka je pri vas. Dnevnik bo, če berete zaporedje in ne prve alarmantne vrstice. Star piškotek običajno pokaže, da se je pogajanje TLS zaključilo in da je plast HTTP nato zavrnila; zato besede o potrdilih stojijo ob neuspehu avtorizacije.

Primerjajte svež zagon authenticate z vrednostmi v datoteki. Če se prstni odtis ujema in se razlikuje samo piškotek, imate odgovor, ne da bi se dotaknili nastavitev zaupanja.

Osvežite poteklo polje

Ponovite ukaz authenticate, zamenjajte OpenConnect.Cookie in znova zaženite demon. Pustite prstni odtis pri miru, razen če svež izhod pokaže drugačno vrednost; v tem primeru je bilo potrdilo strežnika res zamenjano in ponovno pripenjanje je odločitev, ki jo mora nekdo zabeležiti, ne prilepiti iz sporočila o napaki.

Avtomatizacija osveževanja je smiselna: majhen skript prebere geslo s standardnega vhoda, zažene način authenticate in prepiše samo vrstico piškotka. Hranite poverilnice zunaj skripta in berljive samo za račun, ki ga izvaja, prepisovanje pa naj bo atomsko, da neuspešen zagon ne pusti napol zapisane datoteke.

Če je osveževanje potrebno vsakih nekaj ur, zapišite interval. To je lastnost politike sej prehoda in odloča, ali osveževanje avtomatizirati ali zaprositi za daljšo sejo.

Sorodni članki