Vypršení cookie v ConnMan OpenConnect, ne problém s certifikátem
Dvě závady vypadají v logu stejně. Porovnejte připnutý otisk s cookie relace, obnovte pole, kterému vypršela platnost, a restartujte démona.
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.
| 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 |
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.comVý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 attemptCo 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.