La revocació no entra mai dins d’un túnel en funcionament per esborrar una sessió. La llista és una entrada de la verificació del certificat i es consulta durant l’intercanvi del canal de control que inicia una sessió TLS. Aquest sol fet explica les dues sorpreses: un client revocat es torna a connectar perquè la llista no va arribar mai al verificador, i una sessió existent sobreviu perquè ningú no ha tornat a verificar res.

Una llista és una entrada, no una acció

Durant la configuració de la sessió, el servidor valida el certificat del client contra les seves àncores de confiança, i la directiva de revocació afegeix una consulta de la llista a aquesta decisió. La comprovació es fa al servidor, així que el client no pot veure que el seu certificat ha estat revocat i continua oferint el mateix. Per tant, un perfil que encara es connecta només demostra que algun verificador ha acceptat la cadena, no que la revocació hagi fallat.

La llista és ella mateixa un objecte signat amb una data d’emissió i una data de propera actualització. Una llista no relacionada, una de signada per una altra autoritat o una la propera actualització de la qual ha passat no substitueixen la llista actual, i si una llista obsoleta es rebutja o s’accepta en silenci depèn del desplegament.

Connexió nova enfront de sessió en curs

La revocació s’avalua quan s’estableix o es renegocia una sessió, no contra el canal de dades a cada paquet. Un client que ja està connectat té claus de trànsit, així que continua deixant passar paquets després que el seu certificat aparegui a la llista. L’interval de renegociació per defecte es mesura en hores, i per això una llista actualitzada pot entrar en vigor per als nouvinguts mentre un túnel en funcionament es manté.

SituationWhat the list doesWhen it applies
Fresh connectionBlocks the handshakeAt verification, immediately
RenegotiationBlocks the new exchangeAt the next renegotiation interval
Established data channelNothingUntil the session ends

L’aplicació immediata requereix una acció deliberada i no només la llista. Reiniciar el servei obliga cada client a tornar-se a connectar, mentre que acabar una sola sessió des de la interfície de gestió deixa les altres intactes. Trieu-ne una per incident i anoteu quina heu fet servir. Les dues opcions tenen un radi d’impacte diferent, i aquesta és la decisió real.

Lliureu el fitxer que el verificador llegeix de debò

La llista s’ha de generar a partir del registre de l’autoritat i després copiar-se a cada màquina que verifica certificats. Generar-la a l’amfitrió de la CA i no instal·lar-la mai al servidor és la fallada més habitual, i sembla exactament una funció de revocació espatllada.

ca ca.crt
cert server.crt
key server.key
crl-verify /etc/openvpn/crl.pem

Dos detalls decideixen si el fitxer es llegeix realment. Un camí relatiu es resol respecte del directori de configuració, així que una còpia deixada al directori personal d’un operador pot no trobar-se mai. I el dimoni normalment abandona els privilegis després de l’arrencada, així que el compte d’execució necessita permís de cerca a cada directori pare i permís de lectura al fitxer. Comproveu les dues coses amb el compte d’execució i no amb root, o la prova demostrarà la cosa equivocada.

En amfitrions systemd, una unitat endurida també pot amagar el camí, amb una vista només de lectura o un directori de sistema protegit. Des de dins del servei això és indistingible d’un fitxer absent, així que reviseu les restriccions de la unitat abans d’anar a buscar un error de permisos. Llegiu el fitxer de la unitat abans de culpar el mode del fitxer.

Confirmeu-ho al servidor, no al client

El registre del servidor diu què ha passat: obrir la llista, carregar-la o fallar la verificació amb el número de sèrie revocat. El client només informa d’una fallada genèrica d’intercanvi, i per això els registres del client són un mal lloc on buscar una decisió de revocació.

Verifiqueu amb un intent nou des del perfil revocat i atureu-vos. Una connexió correcta des d’aquest perfil és el senyal per inspeccionar el camí del fitxer i el compte d’execució, no per suposar que la llista era incorrecta. Manteniu aquest intent correcte com a prova d’acceptació, i no compteu una reconnexió que no heu observat.

Què no revoca res

Esborrar el perfil d’un portàtil, treure el fitxer del certificat del client o dir a l’usuari que deixi de connectar-se no canvia res al servidor. El certificat continua sent vàlid fins que l’autoritat registra la revocació i el verificador llegeix la llista resultant.

També per això val la pena escriure la cadena: registreu la revocació, genereu i signeu la llista, distribuïu exactament aquest fitxer i confirmeu que el compte del servei el pot llegir. Cada baula és curta, i qualsevol de les que falti deixa un client revocat connectant-se alegrement. Una llista de comprovació de quatre línies val més que una suposició sense cap.

Articles relacionats