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.

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

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

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

Què 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.

Articles relacionats