ConnMan OpenConnect slapuko galiojimo pabaiga, o ne sertifikato problema
Dvi gedimų rūšys žurnale atrodo vienodai. Palyginkite prisegtą piršto atspaudą su sesijos slapuku, atnaujinkite pasibaigusį lauką ir tada paleiskite tarnybą iš naujo.
ConnMan veikia popietę ir tada atsisako, o žurnalo eilutė mini sertifikato tikrinimą. Ta eilutė nukreipia žmones prie CA paketų, kurie niekada nebuvo sugadinti. Dvi skirtingos gedimų rūšys sukuria beveik tokią pačią nesėkmės formą: pasibaigia sesijos slapuko galiojimas arba serverio sertifikatas tikrai pasikeitė. Juos galima atskirti maždaug per minutę, ir tik vienas jų apskritai susijęs su piršto atspaudu.
Dvi gedimų rūšys, viena klaidinanti žurnalo eilutė
Jie išsiskiria pagal du stebėjimus, ir nė vienam nereikia antro skaitymo. Pirmasis – kada prasidėjo nesėkmė: pasibaigęs slapukas ateina po valandų ar dienų darbo, o pakeistas sertifikatas ateina iškart po tinklo vartų pakeitimo.
| 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 |
Vienos minutės testas yra žemiau pateiktas authenticate paleidimas. Palyginkite jo FINGERPRINT su OpenConnect.ServerCert faile. Identiškas piršto atspaudas su kitu COOKIE reiškia, kad reikia pakeisti tik slapuką. Kitas piršto atspaudas reiškia, kad serverio sertifikatas tikrai pasikeitė, todėl sąmoningai prisekite jį iš naujo ir užrašykite, kas tai patvirtino.
Generuokite medžiagą, o ne įveskite ją ranka
ConnMan neturi OpenConnect profilio importavimo veiksmo, kitaip nei NetworkManager. Jis skaito aprūpinimo failą, kurio reikšmės turi būti sukurtos iš anksto, o palaikomas būdas jas sukurti yra OpenConnect authenticate režimas.
sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh \
--authenticate --user myuser vpn.example.comIšvestis atspausdina keturias reikšmes: POST, COOKIE, HOST ir FINGERPRINT. Piršto atspaudas su priešdėliu sha256: yra serverio prisegimas. Slapukas yra sesijos artefaktas, kurio galiojimo laiką nustato tinklo vartai. Traktuokite juos kaip skirtingas paslapties rūšis: jie baigiasi pagal skirtingus grafikus, ir tik vienas jų turėtų keistis.
Failas turi abu, ir jie sensta skirtingai
Aprūpinimo failas yra /var/lib/connman-vpn/ kataloge ir jį kiekvienam ryšiui skaito VPN tarnyba, o ne dėklo programėlė. Laikykite ryšio pavadinimą globaliame skyriuje, o protokolo detales tiekėjo skyriuje.
[global]
Name = Company VPN
[provider_openconnect]
Type = OpenConnect
Name = Company Cisco VPN
Host = vpn.example.com
Domain = corp.example
OpenConnect.ServerCert = sha256:...
OpenConnect.Cookie = ...Naudokite tą pagrindinio kompiuterio vardą, kurį portalas tikrai aptarnauja. Grynas IP adresas gali praeiti sertifikato patikrą ir vis tiek nepavykti, nes įrenginys maršrutizuoja pagal virtualų pagrindinį kompiuterį ir tikisi vardo.
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 attemptKą žurnalas iš tikrųjų rodo
Dėklo patarimas nepasakys, kuri gedimų rūšis pas jus. Žurnalas pasakys, jei skaitysite seką, o ne pirmąją nerimą keliančią eilutę. Pasenęs slapukas paprastai rodo, kad TLS derybos baigėsi, o HTTP sluoksnis po to atmetė; todėl žodžiai apie sertifikatus stovi prie autorizacijos nesėkmės.
Palyginkite naują authenticate paleidimą su reikšmėmis faile. Jei piršto atspaudas sutampa ir skiriasi tik slapukas, atsakymą turite neliesdami pasitikėjimo nustatymų.
Atnaujinkite pasibaigusį lauką
Pakartokite authenticate komandą, pakeiskite OpenConnect.Cookie ir paleiskite tarnybą iš naujo. Palikite piršto atspaudą ramybėje, nebent nauja išvestis rodo kitą reikšmę; tokiu atveju serverio sertifikatas tikrai buvo pakeistas, o pakartotinis prisegimas yra sprendimas, kurį kažkas turi užrašyti, o ne įklijuoti iš klaidos pranešimo.
Atnaujinimo automatizavimas yra pagrįstas: mažas scenarijus nuskaito slaptažodį iš standartinės įvesties, paleidžia authenticate režimą ir perrašo tik slapuko eilutę. Laikykite prisijungimo duomenis už scenarijaus ribų ir skaitomus tik tam, kas jį vykdo, o perrašymą darykite atominiu, kad nepavykęs paleidimas nepaliktų pusiau įrašyto failo.
Jei atnaujinimo reikia kas kelias valandas, užsirašykite intervalą. Tai tinklo vartų sesijų politikos savybė, ir ji nusprendžia, ar automatizuoti atnaujinimą, ar prašyti ilgesnės sesijos.