La caducitat de la galeta de ConnMan OpenConnect, no un problema de certificat
Dues avaries semblen iguals al registre. Compareu l'empremta fixada amb la galeta de sessió, renoveu el camp que ha caducat i reinicieu el dimoni.
ConnMan funciona tota una tarda i després rebutja, i la línia del registre esmenta la verificació del certificat. Aquesta línia envia la gent a lots de CA que mai no estaven trencats. Dues avaries diferents produeixen gairebé la mateixa forma de fallada: la galeta de sessió caduca o el certificat del servidor ha canviat de debò. Es poden separar en aproximadament un minut, i només una d'elles té res a veure amb l'empremta.
Dues avaries, una línia de registre confusa
Es separen amb dues observacions, i cap de les dues no cal llegir-la dues vegades. La primera és quan va començar la fallada: una galeta caducada arriba després d'hores o dies de funcionament, i un certificat substituït arriba just després d'un canvi de passarel·la.
| 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 |
La prova d'un minut és l'execució d'authenticate que hi ha a continuació. Compareu-ne l'FINGERPRINT amb OpenConnect.ServerCert del fitxer. Una empremta idèntica amb una COOKIE diferent vol dir substituir només la galeta. Una empremta diferent vol dir que el certificat del servidor ha canviat de debò, així que torneu-lo a fixar de manera deliberada i anoteu qui ho ha aprovat.
Genereu el material en lloc d'escriure'l
ConnMan no té cap pas d'importació per a un perfil OpenConnect, a diferència de NetworkManager. Llegeix un fitxer de subministrament els valors del qual s'han de produir per endavant, i la manera admesa de produir-los és el mode authenticate d'OpenConnect.
sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh \
--authenticate --user myuser vpn.example.comLa sortida imprimeix quatre valors: POST, COOKIE, HOST i FINGERPRINT. L'empremta, amb el prefix sha256:, és la fixació del servidor. La galeta és l'artefacte de sessió amb una vida útil que decideix la passarel·la. Tracteu-los com a tipus de secret diferents: caduquen segons calendaris diferents, i només se n'espera que canviï un.
El fitxer porta tots dos, i envellteixen de manera diferent
El fitxer de subministrament viu a /var/lib/connman-vpn/ i el dimoni de VPN el llegeix per connexió, no l'aplicació de la safata. Manteniu el nom de la connexió a la secció global i els detalls del protocol a la secció del proveïdor.
[global]
Name = Company VPN
[provider_openconnect]
Type = OpenConnect
Name = Company Cisco VPN
Host = vpn.example.com
Domain = corp.example
OpenConnect.ServerCert = sha256:...
OpenConnect.Cookie = ...Feu servir el nom d'amfitrió que el portal serveix realment. Una adreça IP nua pot superar la comprovació del certificat i tot i així fallar, perquè l'aparell encamina segons l'amfitrió virtual i espera el nom.
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 attemptQuè mostra realment el registre
La informació emergent de la safata no us dirà quina avaria teniu. El registre sí, si llegiu la seqüència en lloc de la primera línia alarmant. Una galeta vella sol mostrar que la negociació TLS s'ha completat i que la capa HTTP rebutja després, i per això les paraules sobre certificats seuen al costat d'una fallada d'autorització.
Compareu una execució d'authenticate nova amb els valors del fitxer. Si l'empremta coincideix i només difereix la galeta, ja teniu la resposta sense tocar la configuració de confiança.
Renoveu el camp que ha caducat
Repetiu l'ordre authenticate, substituïu OpenConnect.Cookie i reinicieu el dimoni. Deixeu l'empremta en pau tret que la sortida nova mostri un valor diferent; en aquest cas el certificat del servidor s'ha substituït de debò i tornar-lo a fixar és una decisió que algú ha de registrar, no un enganxat d'un missatge d'error.
Automatitzar la renovació és raonable: un script petit llegeix la contrasenya de l'entrada estàndard, executa el mode authenticate i reescriu només la línia de la galeta. Manteniu la credencial fora del script i llegible només pel compte que l'executa, i feu la reescriptura atòmica perquè una execució fallida no deixi un fitxer a mig escriure.
Si la renovació cal cada poques hores, anoteu l'interval. És una propietat de la política de sessió de la passarel·la, i decideix si cal automatitzar la renovació o demanar una sessió més llarga.