Het verlopen van de ConnMan OpenConnect-cookie, geen certificaatprobleem
Twee storingen zien er in het journaal hetzelfde uit. Vergelijk de vastgezette vingerafdruk met de sessiecookie, vernieuw het veld dat is verlopen en herstart dan de daemon.
ConnMan werkt een middag en weigert dan, en de journaalregel noemt certificaatverificatie. Die regel stuurt mensen naar CA-bundels die nooit kapot waren. Twee verschillende storingen leveren bijna dezelfde vorm van falen op: de sessiecookie verloopt, of het servercertificaat is echt veranderd. Ze zijn in ongeveer een minuut te scheiden, en slechts één van beide heeft iets met de vingerafdruk te maken.
Twee storingen, één verwarrende journaalregel
Ze scheiden zich op twee waarnemingen, en geen van beide vraagt om een tweede lezing. De eerste is wanneer de storing begon: een verlopen cookie komt na uren of dagen werken, en een vervangen certificaat komt direct na een gatewaywijziging.
| 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 |
De test van een minuut is de authenticate-run hieronder. Vergelijk de FINGERPRINT met OpenConnect.ServerCert in het bestand. Een identieke vingerafdruk met een andere COOKIE betekent alleen de cookie vervangen. Een andere vingerafdruk betekent dat het servercertificaat echt is veranderd, dus zet het bewust opnieuw vast en leg vast wie dat heeft goedgekeurd.
Genereer het materiaal in plaats van het te typen
ConnMan heeft geen importstap voor een OpenConnect-profiel, anders dan NetworkManager. Het leest een provisioningbestand waarvan de waarden vooraf moeten worden gemaakt, en de ondersteunde manier om ze te maken is de authenticate-modus van OpenConnect.
sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh \
--authenticate --user myuser vpn.example.comDe uitvoer drukt vier waarden af: POST, COOKIE, HOST en FINGERPRINT. De vingerafdruk, met het voorvoegsel sha256:, is de verankering van de server. De cookie is het sessieartefact met een levensduur die de gateway bepaalt. Behandel ze als verschillende soorten geheim: ze verlopen volgens verschillende schema's, en van slechts één wordt verwacht dat hij verandert.
Het bestand draagt beide, en ze verouderen verschillend
Het provisioningbestand staat onder /var/lib/connman-vpn/ en wordt per verbinding gelezen door de VPN-daemon, niet door de systeemvak-applet. Houd de verbindingsnaam in de globale sectie en de protocoldetails in de providersectie.
[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 de hostnaam die de portal werkelijk bedient. Een kaal IP-adres kan de certificaatcontrole doorstaan en toch falen, omdat het apparaat routeert op de virtuele host en de naam verwacht.
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 het journaal werkelijk laat zien
De tooltip in het systeemvak zal niet zeggen welke storing u hebt. Het journaal wel, als u de volgorde leest in plaats van de eerste alarmerende regel. Een oude cookie laat meestal zien dat de TLS-onderhandeling is voltooid en dat de HTTP-laag daarna weigert; daarom staan de woorden over certificaten naast een autorisatiefout.
Vergelijk een verse authenticate-run met de waarden in het bestand. Als de vingerafdruk klopt en alleen de cookie verschilt, hebt u uw antwoord zonder de vertrouwensinstellingen aan te raken.
Vernieuw het veld dat is verlopen
Herhaal de authenticate-opdracht, vervang OpenConnect.Cookie en herstart de daemon. Laat de vingerafdruk met rust tenzij de verse uitvoer een andere waarde toont; in dat geval is het servercertificaat echt vervangen en is opnieuw vastzetten een beslissing die iemand moet vastleggen, niet een plak uit een foutmelding.
Het vernieuwen automatiseren is redelijk: een klein script leest het wachtwoord van de standaardinvoer, draait de authenticate-modus en herschrijft alleen de cookieregel. Houd de aanmeldgegevens buiten het script en alleen leesbaar voor het account dat het uitvoert, en maak het herschrijven atomair zodat een mislukte run geen half geschreven bestand achterlaat.
Als het vernieuwen elke paar uur nodig is, schrijf het interval dan op. Het is een eigenschap van het sessiebeleid van de gateway, en het bepaalt of het vernieuwen geautomatiseerd moet worden of om een langere sessie moet worden gevraagd.