ConnMan se OpenConnect-koekie verval, nie 'n sertifikaatprobleem nie
Twee foute lyk dieselfde in die joernaal. Vergelyk die vasgepen vingerafdruk met die sessiekoekie, verfris die veld wat verval het en herbegin dan die daemon.
ConnMan werk 'n middag lank en weier dan, en die joernaalreël noem sertifikaatverifikasie. Daardie reël stuur mense na CA-bondels wat nooit stukkend was nie. Twee verskillende foute lewer byna dieselfde vorm van mislukking: die sessiekoekie verval, of die bediener se sertifikaat het werklik verander. Hulle is in omtrent 'n minuut van mekaar te skei, en net een van hulle het enigiets met die vingerafdruk te doen.
Twee foute, een verwarrende joernaalreël
Hulle skei op twee waarnemings, en nie een daarvan vereis 'n tweede lees nie. Die eerste is wanneer die fout begin het: 'n vervalde koekie kom ná ure of dae van werk, en 'n vervangde sertifikaat kom reg ná 'n gateway-verandering. Die tweede is of die bediener se vingerafdruk steeds ooreenstem, wat 'n nuwe authenticate vir jou druk om te vergelyk.
| 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 |
Die toets van een minuut is die authenticate-uitvoering hieronder. Vergelyk sy FINGERPRINT met OpenConnect.ServerCert in die lêer. 'n Identiese vingerafdruk met 'n ander COOKIE beteken dat net die koekie vervang moet word. 'n Ander vingerafdruk beteken dat die bediener se sertifikaat werklik verander het, so pen dit doelbewus weer vas en teken aan wie dit goedgekeur het.
Genereer die materiaal eerder as om dit te tik
ConnMan het geen invoerstap vir 'n OpenConnect-profiel nie, anders as NetworkManager. Dit lees 'n voorsieningslêer waarvan die waardes vooraf geskep moet word, en die ondersteunde manier om hulle te skep is OpenConnect se authenticate-modus.
sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh \
--authenticate --user myuser vpn.example.comDie uitvoer druk vier waardes: POST, COOKIE, HOST en FINGERPRINT. Die vingerafdruk, met die voorvoegsel sha256:, is die bedienerpen. Die koekie is die sessie-artefak met 'n leeftyd wat die gateway bepaal. Behandel hulle as verskillende soorte geheime: hulle verval volgens verskillende skedules, en net een daarvan word verwag om te verander.
Die lêer dra albei, en hulle verouder verskillend
Die voorsieningslêer woon onder /var/lib/connman-vpn/ en word per verbinding deur die VPN-daemon gelees, nie deur die sisteemlaai-program nie. Hou die verbindingsnaam in die globale afdeling en die protokolbesonderhede in die verskafferafdeling.
[global]
Name = Company VPN
[provider_openconnect]
Type = OpenConnect
Name = Company Cisco VPN
Host = vpn.example.com
Domain = corp.example
OpenConnect.ServerCert = sha256:...
OpenConnect.Cookie = ...Gebruik die gasheernaam wat die portaal werklik bedien. 'n Kaal IP-adres kan die sertifikaattoets slaag en tog misluk, want die toestel roeteer op die virtuele gasheer en verwag die naam.
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 attemptWat die joernaal werklik wys
Die sisteemlaai se nutswenk sal nie sê watter fout jy het nie. Die joernaal sal, as jy die volgorde lees eerder as die eerste opskuddende reël. 'n Verouderde koekie wys tipies dat die TLS-onderhandeling voltooi en die HTTP-laag daarna verwerp, en daarom staan die woorde oor sertifikate langs 'n magtigingsfout.
Vergelyk 'n vars authenticate met die waardes in die lêer. As die vingerafdruk ooreenstem en net die koekie verskil, het jy jou antwoord sonder om vertrouensinstellings aan te raak.
Verfris die veld wat verval het
Herhaal die authenticate-opdrag, vervang OpenConnect.Cookie, en herbegin die daemon. Los die vingerafdruk alleen, tensy die vars uitvoer 'n ander waarde wys; in daardie geval is die bediener se sertifikaat werklik vervang en is hervaspenning 'n besluit wat iemand moet opteken eerder as 'n plak uit 'n foutboodskap.
Om die verversing te outomatiseer is redelik: 'n klein skrip lees die wagwoord van standaardinvoer, voer authenticate-modus uit en herskryf net die koekiereël. Hou die geloofsbrief uit die skrip en leesbaar net vir die rekening wat dit uitvoer, en maak die herskrywing atomies sodat 'n mislukte lopie nie 'n halfgeskrewe lêer agterlaat nie.
As die verversing elke paar uur nodig is, skryf die interval neer. Dit is 'n eienskap van die gateway se sessiebeleid, en dit besluit of die verversing geoutomatiseer moet word of om 'n langer sessie gevra moet word.