ConnMan funguje jedno odpoledne a pak odmítne a řádek v logu zmiňuje ověřování certifikátu. Ten řádek posílá lidi k sadám CA, které nikdy nebyly rozbité. Dvě různé závady dávají téměř stejný tvar selhání: vyprší cookie relace, nebo se certifikát serveru skutečně změnil. Lze je rozeznat zhruba za minutu a jen jedna z nich se vůbec týká otisku.

Dvě závady, jeden matoucí řádek logu

Rozeznáte je podle dvou pozorování a ani jedno nevyžaduje druhé čtení. První je, kdy selhání začalo: vypršelá cookie přichází po hodinách nebo dnech práce, a vyměněný certifikát přichází hned po změně brány.

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

Test za minutu je spuštění authenticate níže. Porovnejte jeho FINGERPRINT s OpenConnect.ServerCert v souboru. Shodný otisk s jinou COOKIE znamená vyměnit pouze cookie. Jiný otisk znamená, že se certifikát serveru skutečně změnil, takže ho záměrně znovu připněte a zaznamenejte, kdo to schválil.

Vygenerujte materiál, místo abyste ho psali ručně

ConnMan nemá krok importu profilu OpenConnect, na rozdíl od NetworkManageru. Čte soubor zřizování, jehož hodnoty musí být vytvořeny předem, a podporovaný způsob, jak je vytvořit, je režim authenticate v OpenConnectu.

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

Výstup vypisuje čtyři hodnoty: POST, COOKIE, HOST a FINGERPRINT. Otisk s předponou sha256: je připnutí serveru. Cookie je artefakt relace s životností, kterou určuje brána. Berte je jako různé druhy tajemství: vyprší podle různých plánů a očekává se, že se změní jen jedno.

Soubor nese obojí a stárne to různě

Soubor zřizování žije v /var/lib/connman-vpn/ a čte ho pro každé připojení démon VPN, nikoli applet v oznamovací oblasti. Držte název připojení v globální sekci a podrobnosti protokolu v sekci poskytovatele.

[global]
Name = Company VPN

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

Použijte název hostitele, který portál skutečně obsluhuje. Holá adresa IP může projít kontrolou certifikátu a přesto selhat, protože zařízení směruje podle virtuálního hostitele a název očekává.

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

Co log skutečně ukazuje

Tip v oznamovací oblasti neřekne, kterou závadu máte. Log to řekne, pokud čtete posloupnost, a ne první alarmující řádek. Zastaralá cookie obvykle ukazuje, že vyjednávání TLS skončilo a vrstva HTTP poté požadavek odmítla; proto slova o certifikátech stojí vedle selhání autorizace.

Porovnejte nové spuštění authenticate s hodnotami v souboru. Pokud otisk sedí a liší se jen cookie, máte odpověď, aniž byste se dotkli nastavení důvěry.

Obnovte pole, kterému vypršela platnost

Zopakujte příkaz authenticate, nahraďte OpenConnect.Cookie a restartujte démona. Otisk nechte být, pokud nový výstup neukáže jinou hodnotu; v takovém případě byl certifikát serveru skutečně vyměněn a nové připnutí je rozhodnutí, které má někdo zaznamenat, ne vložit z chybové zprávy.

Automatizovat obnovu je rozumné: malý skript přečte heslo ze standardního vstupu, spustí režim authenticate a přepíše jen řádek s cookie. Uchovávejte přihlašovací údaj mimo skript a čitelný jen pro účet, který ho spouští, a přepis dělejte atomicky, aby neúspěšné spuštění nezanechalo napůl zapsaný soubor.

Pokud je obnova potřeba každých několik hodin, poznamenejte interval. Je to vlastnost zásad relací brány a rozhoduje o tom, zda obnovu automatizovat, nebo požádat o delší relaci.

Související články