ConnManin OpenConnect-evästeen vanheneminen, ei sertifikaattiongelma
Kaksi vikaa näyttävät lokissa samalta. Vertaa kiinnitettyä sormenjälkeä istuntoevästeeseen, uusi vanhentunut kenttä ja käynnistä sitten taustapalvelu uudelleen.
ConnMan toimii iltapäivän ja kieltäytyy sitten, ja lokirivi mainitsee sertifikaatin tarkistuksen. Se rivi lähettää ihmiset CA-nippujen luo, jotka eivät koskaan olleet rikki. Kaksi eri vikaa tuottaa lähes saman epäonnistumisen muodon: istuntoeväste vanhenee tai palvelimen sertifikaatti todella vaihtui. Ne voi erottaa noin minuutissa, ja vain toinen niistä liittyy sormenjälkeen lainkaan.
Kaksi vikaa, yksi hämmentävä lokirivi
Ne eroavat kahdesta havainnosta, eikä kumpikaan vaadi toista lukukertaa. Ensimmäinen on se, milloin vika alkoi: vanhentunut eväste saapuu tuntien tai päivien työskentelyn jälkeen, ja korvattu sertifikaatti saapuu heti yhdyskäytävän muutoksen jälkeen.
| 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 |
Minuutin koe on alla oleva authenticate-ajo. Vertaa sen FINGERPRINT-arvoa tiedostossa olevaan OpenConnect.ServerCert-arvoon. Sama sormenjälki ja eri COOKIE tarkoittaa, että vain eväste vaihdetaan. Eri sormenjälki tarkoittaa, että palvelimen sertifikaatti todella vaihtui, joten kiinnitä se tarkoituksella uudelleen ja kirjaa, kuka sen hyväksyi.
Luo aineisto sen sijaan, että kirjoittaisit sen
ConnManissa ei ole OpenConnect-profiilin tuontivaihetta, toisin kuin NetworkManagerissa. Se lukee valmistelutiedoston, jonka arvot on tuotettava etukäteen, ja tuettu tapa tuottaa ne on OpenConnectin authenticate-tila.
sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh \
--authenticate --user myuser vpn.example.comTuloste tulostaa neljä arvoa: POST, COOKIE, HOST ja FINGERPRINT. Sormenjälki, jonka etuliite on sha256:, on palvelimen kiinnitys. Eväste on istunnon artefakti, jonka eliniän yhdyskäytävä päättää. Käsittele niitä eri salaisuustyyppeinä: ne vanhenevat eri aikatauluilla ja vain toisen odotetaan muuttuvan.
Tiedosto sisältää molemmat, ja ne vanhenevat eri tavoin
Valmistelutiedosto sijaitsee hakemistossa /var/lib/connman-vpn/, ja VPN-taustapalvelu lukee sen yhteyksittäin, ei järjestelmäalueen sovellus. Pidä yhteyden nimi yleisosiossa ja protokollan tiedot tarjoajaosiossa.
[global]
Name = Company VPN
[provider_openconnect]
Type = OpenConnect
Name = Company Cisco VPN
Host = vpn.example.com
Domain = corp.example
OpenConnect.ServerCert = sha256:...
OpenConnect.Cookie = ...Käytä isäntänimeä, jota portaali todella palvelee. Pelkkä IP-osoite voi läpäistä sertifikaattitarkistuksen ja silti epäonnistua, koska laite reitittää virtuaalisen isännän mukaan ja odottaa nimeä.
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 attemptMitä loki todella näyttää
Järjestelmäalueen vihje ei kerro, kumpi vika sinulla on. Loki kertoo, jos luet järjestyksen etkä ensimmäistä hälyttävää riviä. Vanhentunut eväste näyttää tyypillisesti, että TLS-neuvottelu on valmistunut ja HTTP-kerros hylkäsi sen jälkeen, ja siksi sertifikaatteja koskevat sanat seisovat valtuutusvirheen vieressä.
Vertaa tuoretta authenticate-ajoa tiedoston arvoihin. Jos sormenjälki täsmää ja vain eväste eroaa, vastaus on käsissäsi koskematta luottamusasetuksiin.
Uusi vanhentunut kenttä
Toista authenticate-komento, korvaa OpenConnect.Cookie ja käynnistä taustapalvelu uudelleen. Jätä sormenjälki rauhaan, ellei tuore tuloste näytä eri arvoa; siinä tapauksessa palvelimen sertifikaatti todella korvattiin ja uudelleenkiinnitys on päätös, joka jonkun pitäisi kirjata, ei virheilmoituksesta liittäminen.
Uusinnan automatisoiminen on järkevää: pieni skripti lukee salasanan vakiosyötteestä, ajaa authenticate-tilaa ja kirjoittaa uudelleen vain evästérivin. Pidä kirjautumistieto poissa skriptistä ja luettavana vain sitä ajavalle tilille, ja tee uudelleenkirjoituksesta atomista, jotta epäonnistunut ajo ei jätä puoliksi kirjoitettua tiedostoa.
Jos uusinta tarvitaan muutaman tunnin välein, kirjoita väli muistiin. Se on yhdyskäytävän istuntokäytännön ominaisuus, ja se ratkaisee, automatisoidaanko uusinta vai pyydetäänkö pidempää istuntoa.