O amprentă este doar atât de bună cât canalul care v-a spus la ce să vă așteptați. Dacă valoarea cu care comparați a sosit prin aceeași conexiune pe care o testați, comparația nu dovedește nimic dincolo de faptul că partea care controlează acea conexiune este consecventă. Verificarea trebuie să urmeze o ordine fixă, iar un pas eșuat ar trebui să vă oprească în loc să vă împingă la următorul. Iată ordinea pe care o folosesc când un client VPN raportează că un certificat s-a schimbat.

Numiți obiectul înainte de a numi valoarea

Decideți dacă valoarea așteptată aparține certificatului frunză al serverului, autorității de certificare emitente sau cheii publice din interiorul frunzei. Sunt trei verificări diferite și eșuează în moduri diferite. O amprentă de CA care se potrivește nu fixează serverul, iar un hash al cheii publice supraviețuiește intenționat unei reemiteri care păstrează aceeași cheie.

Notați și algoritmul. SHA-256 este așteptarea normală astăzi, dar uneltele mai vechi tipăreau SHA-1 dacă nu cereați altceva, iar o valoare hex de 40 de caractere este un semn că sunteți pe punctul de a compara două lucruri diferite.

Obțineți valoarea așteptată printr-un al doilea canal

Al doilea canal trebuie să fie unul în care partea de care vă feriți nu poate scrie. Un sistem de provizionare la care vă autentificați deja, o înregistrare tipărită într-un seif, o bază de date de configurare sau un document semnat livrat de alt proces se califică toate. Un mesaj de chat de la un coleg, o pagină de suport ajunsă printr-un rezultat de căutare și orice este lipit în terminalul în care deja depanați nu se califică.

Cereți valoarea completă și algoritmul, niciodată un prefix. Cele două puncte și majusculele sau minusculele nu contează, dar trunchierea transformă o verificare de 256 de biți într-un joc de ghicit.

Dacă nimeni nu poate produce valoarea așteptată dintr-o sursă independentă, rezultatul onest este că acest certificat nu poate fi verificat astăzi. A spune asta este mai bine decât a fixa ceea ce clientul tocmai a afișat, ceea ce transformă un avertisment într-un obicei.

Extrageți valoarea de partea dumneavoastră

Pentru un fișier de certificat, comanda este openssl x509 -in server.crt -noout -fingerprint -sha256. Digestul explicit contează: fără el, rezultatul depinde de versiunea dumneavoastră de OpenSSL. Rezultatul este un șir hexazecimal separat prin două puncte, așa că eliminați cele două puncte și treceți ambele părți la litere mici înainte de a compara.

Pentru un punct final care vorbește TLS direct, conectați-vă și scoateți certificatul prin conductă: openssl s_client -connect vpn.example.com:443 -servername vpn.example.com < /dev/null | openssl x509 -noout -fingerprint -sha256. Acest lucru funcționează pentru un panou de administrare web sau un ascultător TLS, nu pentru OpenVPN, al cărui canal de control se află în interiorul tunelului. Pentru OpenVPN, citiți certificatul din profilul de pe disc în loc să încercați să îl prindeți din socket.

Comparația ar trebui să fie mecanică. Normalizați ambele valori cu tr -d ':' și o conversie la litere mici, apoi comparați întregul șir. A face asta din ochi este modul în care un prefix potrivit ascunde o diferență în ultimul octet. Dacă șirurile diferă, tratați diferența ca reală înainte de a căuta o explicație.

Condiții de oprire

Opriți-vă dacă obiectul diferă, fiindcă o amprentă de CA nu poate exonera un certificat frunză, iar o frunză nu poate exonera CA. Opriți-vă dacă algoritmul diferă, fiindcă o valoare SHA-1 comparată cu o valoare SHA-256 nu vă spune nimic. Opriți-vă dacă amprenta se potrivește, dar certificatul este expirat, revocat sau emis pentru alt nume; un hash potrivit nu este o verificare de validitate și nu repară un lanț rupt. Opriți-vă și dacă numărul de serie nu corespunde numărului de serie din înregistrarea față de care verificați, fiindcă acesta este cel mai ieftin mod de a observa un certificat înlocuit.

Opriți-vă dacă valoarea nouă a sosit prin canalul pe care îl testați. Rotația poate schimba legitim o amprentă, dar valoarea de înlocuire trebuie totuși să vină din procesul de încredere, nu din dialogul de avertizare care a provocat întrebarea.

Opriți-vă dacă remedierea sugerată este să dezactivați verificarea numelui de gazdă sau a lanțului. O amprentă adaugă o constrângere verificărilor normale; nu le înlocuiește decât dacă implementarea a ales în mod deliberat un model doar cu pin, iar această alegere are propriile costuri operaționale.

După comparație

Notați ce ați comparat, de unde a venit valoarea așteptată și când. Dacă certificatul a fost reemis, actualizați așteptarea stocată prin același canal de încredere și notați noul număr de serie, fiindcă numărul de serie este cel care face următoarea rotație auditabilă.

Apoi fiți clar cu privire la limite. O amprentă confirmă că certificatul pe care îl aveți este cel pe care cineva v-a spus să îl așteptați. Nu spune nimic despre gazda necompromisă și nimic despre dacă serviciul înregistrează sau restricționează ceea ce poate atinge acel certificat.

Articole similare