Mateix nom de fitxer ca.crt, certificat diferent: què cal comparar
Dos perfils poden portar un ca.crt amb continguts diferents. Empremteu el que carrega el procés i després comproveu si és l’àncora de confiança que volíeu.
Dos perfils tots dos porten un fitxer anomenat ca.crt, un túnel s’aixeca i l’altre falla amb un error de cadena. Obrir els dos fitxers costat a costat poques vegades ho resol, i desactivar la verificació ho resol en la direcció equivocada. La pregunta que l’error planteja en realitat és més estreta: quin certificat carrega cada procés com a àncora de confiança seva, i són els dos el mateix objecte? Responeu això primer i la resta del diagnòstic tindrà una direcció. El nom del fitxer és una etiqueta d’embalatge, i el camí escrit al perfil tampoc no és autoritatiu, així que tot depèn del que el procés llegeix de debò.
Trobeu el certificat que el client carrega de debò
OpenVPN accepta l’autoritat en dues formes, i la forma decideix quins bytes importen. Un perfil pot apuntar a un fitxer extern amb ca, o incrustar el certificat dins d’un bloc <ca> al mateix perfil. Quan existeixen tots dos, guanya el bloc incrustat i el fitxer que hi ha al costat del perfil no s’obre mai.
Llegiu el perfil que falla i esbrineu quina forma fa servir abans de comparar res. Una còpia treta d’un directori veí, o del paquet d’on va sortir l’altre perfil, no us diu res sobre què confia aquest procés. El mateix val per al camí de la configuració: es resol respecte d’on es va iniciar el client, que no sempre és el directori que esteu mirant. Llegiu el perfil, no la carpeta.
Els certificats s’identifiquen pel seu contingut: la clau pública, el subjecte i l’emissor, la finestra de validesa i la signatura sobre tot això. Dos fitxers amb bytes idèntics són el mateix certificat diguin-se com diguin-se, i dos fitxers amb el mateix nom poden ser autoritats sense cap relació. El nom és una etiqueta d’embalatge, no una identitat.
Empremteu les dues còpies amb openssl
Una empremta és un hash sobre la codificació DER del certificat, la forma que cobreix la signatura, així que els finals de línia i el text de la capçalera no hi poden afectar. Calculeu-la per a cada fitxer i tindreu dues cadenes hexadecimals separades per dos punts que o coincideixen o no. No cal llegir res més del certificat per respondre la pregunta de la comparació.
openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256
És temptador apuntar openssl al mateix perfil, però llegeix el primer bloc de certificat que apareix al fitxer, i un perfil normalment porta <cert> abans de <ca>. Extraieu el bloc de l’autoritat, després empremteu el fitxer extret, perquè aquesta és la còpia que el client farà servir de debò.
sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256
Empremtes idèntiques volen dir que el material de confiança és el mateix i que l’error de cadena té alguna altra causa, que és una investigació diferent. Empremtes diferents volen dir certificats diferents, i aquí comença la secció següent.
Llegiu una discrepància abans de suposar un atac
Empremtes diferents volen dir certificats diferents i res més. Una reemissió, una rotació, una autoritat rebatejada o un paquet obsolet produeixen tots fitxers diferents amb històries del tot legítimes. Quin pertoca al desplegament és una pregunta per a l’operador o per a el registre de desplegament, no per a l’hora de modificació del fitxer. Els arxius copien marques de temps, així que un fitxer més nou no és automàticament l’àncora correcta.
Una arrel que se signa a si mateixa és normal, així que trobar-ne una no és prova d’un problema. La feina del verificador és construir un camí des del certificat del servidor fins a l’àncora que li han donat, i un error de cadena normalment vol dir que aquest camí no s’ha pogut completar.
Comproveu si l’àncora del perfil que falla és una autoritat de la qual el desplegament encara emet. Si l’empremta no coincideix amb res del registre de desplegament, el perfil simplement és obsolet, i cap ajustament al costat del client ho arreglarà.
Repareu la confiança sense desactivar la verificació
La solució a curt termini és desactivar la verificació o afegir cada certificat de la cadena com a àncora. Totes dues fan desaparèixer el missatge, i totes dues canvien quins servidors acceptarà el client a partir de llavors. Torneu a activar la verificació, instal·leu l’àncora prevista i torneu a provar.
Si la cadena ara es construeix però apareix un error diferent, això és progrés: la verificació del nom, les dates de validesa i la revocació són comprovacions separades amb missatges separats. Manteniu la parella d’empremtes i el text original de l’error junts al tiquet, perquè la propera persona vegi quina àncora s’ha carregat i quina s’esperava. Una parella d’empremtes és prou petita per enganxar-la en una nota de traspàs, i la propera ocurrència aleshores costa cinc minuts en lloc d’una tarda.
Obteniu l’autoritat correcta pel mateix canal autenticat que va lliurar el perfil. Treure un certificat del servidor perquè el seu subjecte sembla familiar és un acte diferent, i amplia en silenci allò en què el client confiarà.