Una empremta val tant com el canal que us ha dit què cal esperar. Si el valor amb què compareu ha arribat per la mateixa connexió que esteu provant, la comparació no demostra res més enllà del fet que qui controla aquesta connexió és coherent. La comprovació ha de seguir un ordre fix, i un pas fallit us ha d’aturar en lloc d’empènyer-vos al següent. Aquest és l’ordre que faig servir quan un client VPN informa que un certificat ha canviat.

Anomeneu l’objecte abans d’anomenar el valor

Decidiu si el valor esperat pertany al certificat full del servidor, a l’entitat emissora CA o a la clau pública dins del full. Són tres comprovacions diferents i fallen de maneres diferents. Una empremta de CA que coincideix no fixa el servidor, i un hash de la clau pública sobreviu expressament a una reemissió que manté la mateixa clau.

Anoteu també l’algorisme. SHA-256 és l’expectativa normal avui, però les eines antigues imprimien SHA-1 tret que demanéssiu una altra cosa, i un valor hex de 40 caràcters és un senyal que esteu a punt de comparar dues coses diferents.

Obteniu el valor esperat per un segon canal

El segon canal ha de ser un en què la part contra la qual us protegíssiu no pugui escriure. Un sistema d’aprovisionament amb què ja us autentiqueu, un registre imprès en una caixa forta, una base de dades de configuració o un document signat lliurat per un altre procés compleixen tots els requisits. Un missatge de xat d’un col·lega, una pàgina d’assistència arribada per un resultat de cerca i qualsevol cosa enganxada al terminal on ja esteu depurant no compleixen.

Demaneu el valor complet i l’algorisme, mai un prefix. Els dos punts i les majúscules o minúscules no importen, però el truncament converteix una comprovació de 256 bits en un joc d’endevinar.

Si ningú no pot produir el valor esperat des d’una font independent, el resultat honest és que aquest certificat avui no es pot verificar. Dir-ho és millor que fixar allò que el client acaba de mostrar, cosa que converteix un avís en un costum.

Extraieu el valor a la vostra banda

Per a un fitxer de certificat, l’ordre és openssl x509 -in server.crt -noout -fingerprint -sha256. El digest explícit és important: sense ell, la sortida depèn de la vostra versió d’OpenSSL. El resultat és una cadena hex separada per dos punts, així que traieu els dos punts i passeu les dues bandes a minúscules abans de comparar.

Per a un punt final que parla TLS directament, connecteu-vos i canalitzeu el certificat cap a fora: openssl s_client -connect vpn.example.com:443 -servername vpn.example.com < /dev/null | openssl x509 -noout -fingerprint -sha256. Això funciona per a un panell d’administració web o un oient TLS, no per a OpenVPN, el canal de control del qual és dins del túnel. Per a OpenVPN, llegiu el certificat del perfil al disc en lloc d’intentar capturar-lo del sòcol.

La comparació ha de ser mecànica. Normalitzeu els dos valors amb tr -d ':' i una conversió a minúscules, i després compareu la cadena sencera. Fer-ho a ull és com un prefix coincident amaga una discrepància en l’últim byte. Si les cadenes difereixen, tracteu la diferència com a real abans de buscar una explicació.

Condicions d’aturada

Atureu-vos si l’objecte difereix, perquè una empremta de CA no pot absoldre un certificat full ni un full pot absoldre la CA. Atureu-vos si l’algorisme difereix, perquè un valor SHA-1 comparat amb un valor SHA-256 no us diu res. Atureu-vos si l’empremta coincideix però el certificat és caducat, revocat o emès per a un altre nom; un hash coincident no és una comprovació de validesa i no repara una cadena trencada. Atureu-vos també si el número de sèrie no coincideix amb el número de sèrie del registre amb què comproveu, perquè és la manera més barata de detectar un certificat substituït.

Atureu-vos si el nou valor ha arribat pel canal que estàveu provant. La rotació pot canviar legítimament una empremta, però el valor de substitució encara ha de venir del procés de confiança, no del diàleg d’avís que va provocar la pregunta.

Atureu-vos si la correcció suggerida és desactivar la verificació del nom d’amfitrió o de la cadena. Una empremta afegeix una restricció a les comprovacions normals; no les substitueix tret que el desplegament hagi triat deliberadament un model només de pin, i aquesta tria comporta els seus propis costos operatius.

Després de la comparació

Registreu què heu comparat, d’on venia el valor esperat i quan. Si el certificat es va reemetre, actualitzeu l’expectativa desada pel mateix canal de confiança i anoteu el nou número de sèrie, perquè és el número de sèrie el que fa auditable la rotació següent.

Després sigueu clars sobre els límits. Una empremta confirma que el certificat que teniu és el que algú us va dir que esperéssiu. No diu res sobre si l’amfitrió està compromès, ni sobre si el servei registra o restringeix què pot assolir aquest certificat.

Articles relacionats