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.

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

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.com

Die 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 attempt

Wat 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.

Verwante artikels