Otisak je samo toliko dobar koliko je dobar kanal koji vam je rekao šta da očekujete. Ako je vrijednost s kojom upoređujete stigla istom vezom koju testirate, poređenje ne dokazuje ništa osim da je onaj ko kontrolira tu vezu dosljedan. Provjera se mora odvijati fiksnim redom, a neuspješan korak treba da vas zaustavi umjesto da vas gurne na sljedeći. Ovo je red koji koristim kada VPN klijent javi da se certifikat promijenio.

Imenujte objekt prije nego što imenujete vrijednost

Odlučite pripada li očekivana vrijednost završnom certifikatu servera, CA koji ga izdaje ili javnom ključu unutar završnog certifikata. To su tri različite provjere i one padaju na različite načine. CA otisak koji se poklapa ne prikiva server, a hash javnog ključa namjerno preživljava ponovno izdavanje koje zadržava isti ključ.

Zapišite i algoritam. SHA-256 je danas normalno očekivanje, ali stariji alati su ispisivali SHA-1 osim ako niste tražili drugačije, a hex vrijednost od 40 znakova znak je da ćete upoređivati dvije različite stvari.

Pribavite očekivanu vrijednost preko drugog kanala

Drugi kanal mora biti onaj u koji strana od koje se štitite ne može pisati. Sistem za dodjelu u koji se već autentificirate, štampani zapis u sefu, baza konfiguracije ili potpisani dokument koji dostavlja drugi proces, svi zadovoljavaju. Chat poruka od kolege, stranica podrške do koje ste došli preko rezultata pretrage, i sve što je zalijepljeno u terminal u kojem već debagujete, ne zadovoljavaju.

Tražite punu vrijednost i algoritam, nikada prefiks. Dvotačke i velika ili mala slova nisu važni, ali skraćivanje pretvara provjeru od 256 bita u igru pogađanja.

Ako niko ne može dati očekivanu vrijednost iz neovisnog izvora, iskren rezultat je da se ovaj certifikat danas ne može provjeriti. Reći to bolje je nego prikivati ono što je klijent upravo prikazao, što upozorenje pretvara u naviku.

Izvučite vrijednost na svojoj strani

Za datoteku certifikata komanda je openssl x509 -in server.crt -noout -fingerprint -sha256. Eksplicitni digest je važan: bez njega izlaz zavisi od vaše verzije OpenSSL-a. Rezultat je heksadecimalni niz razdvojen dvotačkama, zato uklonite dvotačke i obje strane prevedite u mala slova prije poređenja.

Za krajnju tačku koja govori TLS direktno, povežite se i ispumpajte certifikat: openssl s_client -connect vpn.example.com:443 -servername vpn.example.com < /dev/null | openssl x509 -noout -fingerprint -sha256. To radi za web admin panel ili TLS listener, ne za OpenVPN, čiji kontrolni kanal stoji unutar tunela. Za OpenVPN čitajte certifikat iz profila na disku umjesto da ga pokušavate uhvatiti sa socketa.

Poređenje treba biti mehaničko. Normalizirajte obje vrijednosti pomoću tr -d ':' i prevođenja u ista slova, pa uporedite cijeli niz. Poređenje na oko je način na koji podudarni prefiks sakrije razliku u zadnjem bajtu. Ako se nizovi razlikuju, tretirajte razliku kao stvarnu prije nego što potražite objašnjenje.

Uslovi za zaustavljanje

Zaustavite se ako se objekt razlikuje, jer CA otisak ne može očistiti završni certifikat a završni ne može očistiti CA. Zaustavite se ako se algoritam razlikuje, jer SHA-1 vrijednost prema SHA-256 vrijednosti ne govori vam ništa. Zaustavite se ako se otisak poklapa ali je certifikat istekao, opozvan ili izdan za drugo ime; podudarni hash nije provjera valjanosti i ne popravlja pokvaren lanac. Zaustavite se i ako se serijski broj ne poklapa sa serijskim brojem u zapisu s kojim se upoređujete, jer je to najjeftiniji način da uočite zamijenjeni certifikat.

Zaustavite se ako je nova vrijednost stigla kanalom koji ste testirali. Rotacija može legitimno promijeniti otisak, ali zamjenska vrijednost ipak mora doći iz pouzdanog procesa, ne iz dijaloga upozorenja koji je izazvao pitanje.

Zaustavite se ako je predloženo rješenje isključiti provjeru imena hosta ili lanca. Otisak dodaje ograničenje normalnim provjerama; on ih ne zamjenjuje osim ako je implementacija namjerno odabrala model samo s pinom, a taj izbor nosi vlastite operativne troškove.

Nakon poređenja

Zapišite šta ste upoređivali, odakle je došla očekivana vrijednost i kada. Ako je certifikat ponovo izdan, ažurirajte pohranjeno očekivanje preko istog pouzdanog kanala i zabilježite novi serijski broj, jer serijski broj je ono što sljedeću rotaciju čini revizijski provjerljivom.

Zatim budite jasni o granicama. Otisak potvrđuje da je certifikat koji držite onaj koji vam je neko rekao da očekujete. On ne govori ništa o tome je li host nekompromitiran, niti o tome evidentira li ili ograničava usluga ono do čega taj certifikat može doći.

Povezani članci