Et fingeraftryk er kun så godt som den kanal, der fortalte dig, hvad du skulle forvente. Hvis den værdi, du sammenligner med, kom over den samme forbindelse, som du tester, beviser sammenligningen intet ud over, at den, der kontrollerer forbindelsen, er konsistent. Kontrollen skal køre i en fast rækkefølge, og et mislykket trin bør stoppe dig i stedet for at skubbe dig videre til det næste. Her er den rækkefølge, jeg bruger, når en VPN-klient rapporterer, at et certifikat er ændret.

Navngiv objektet, før du navngiver værdien

Afgør, om den forventede værdi hører til serverens løvcertifikat, til den udstedende CA eller til den offentlige nøgle inde i løvet. Det er tre forskellige kontroller, og de fejler på forskellige måder. Et CA-fingeraftryk, der matcher, pinner ikke serveren, og en hash af den offentlige nøgle overlever bevidst en genudstedelse, der beholder samme nøgle.

Skriv også algoritmen ned. SHA-256 er den normale forventning nu, men ældre værktøj udskrev SHA-1, medmindre du bad om noget andet, og en hex-værdi på 40 tegn er et tegn på, at du er ved at sammenligne to forskellige ting.

Hent den forventede værdi ad en anden kanal

Den anden kanal skal være en, som den part, du værner dig imod, ikke kan skrive til. Et klargøringssystem, du allerede godkender dig over for, en trykt registrering i et pengeskab, en konfigurationsdatabase eller et signeret dokument leveret af en anden proces kvalificerer alle. En chatbesked fra en kollega, en supportside fundet via et søgeresultat og alt, hvad der er indsat i terminalen, du allerede fejlretter i, kvalificerer ikke.

Bed om den fulde værdi og algoritmen, aldrig et præfiks. Kolonner og store eller små bogstaver er ligegyldige, men afkortning gør en kontrol på 256 bit til et gættespil.

Hvis ingen kan levere den forventede værdi fra en uafhængig kilde, er det ærlige resultat, at dette certifikat ikke kan verificeres i dag. At sige det er bedre end at pinne, hvad klienten netop har vist, hvilket gør en advarsel til en vane.

Uddrag værdien på din egen side

For en certifikatfil er kommandoen openssl x509 -in server.crt -noout -fingerprint -sha256. Den eksplicitte digest er vigtig: uden den afhænger output af din OpenSSL-version. Resultatet er en kolonadskilt hex-streng, så fjern kolonnerne og skriv begge sider med små bogstaver, før du sammenligner.

For et endpoint, der taler TLS direkte, skal du forbinde og pumpe certifikatet ud: openssl s_client -connect vpn.example.com:443 -servername vpn.example.com < /dev/null | openssl x509 -noout -fingerprint -sha256. Det virker til et webadministrationspanel eller en TLS-lytter, ikke til OpenVPN, hvis kontrolkanal ligger inde i tunnelen. For OpenVPN skal du læse certifikatet fra profilen på disken i stedet for at prøve at fange det fra soklen.

Sammenligningen bør være mekanisk. Normaliser begge værdier med tr -d ':' og en ændring til små bogstaver, og sammenlign så hele strengen. At gøre det på øje er den måde, hvorpå et matchende præfiks skjuler en forskel i den sidste byte. Hvis strengene er forskellige, skal du behandle forskellen som reel, før du leder efter en forklaring.

Stopbetingelser

Stop, hvis objektet er forskelligt, for et CA-fingeraftryk kan ikke frikende et løvcertifikat, og et løv kan ikke frikende CA'en. Stop, hvis algoritmen er forskellig, for en SHA-1-værdi sammenlignet med en SHA-256-værdi siger dig intet. Stop, hvis fingeraftrykket matcher, men certifikatet er udløbet, tilbagekaldt eller udstedt til et andet navn; en matchende hash er ikke en gyldighedskontrol og reparerer ikke en brudt kæde. Stop også, hvis serienummeret ikke matcher serienummeret i den registrering, du kontrollerer imod, for det er den billigste måde at opdage et ombyttet certifikat.

Stop, hvis den nye værdi kom gennem den kanal, du testede. Rotation kan lovligt ændre et fingeraftryk, men erstatningsværdien skal stadig komme fra den betroede proces, ikke fra den advarselsdialog, der udløste spørgsmålet.

Stop, hvis den foreslåede løsning er at slå værtsnavns- eller kædeverifikation fra. Et fingeraftryk tilføjer en begrænsning til de normale kontroller; det erstatter dem ikke, medmindre udrulningen bevidst har valgt en model med kun pin, og det valg har sine egne driftsomkostninger.

Efter sammenligningen

Noter, hvad du sammenlignede, hvor den forventede værdi kom fra, og hvornår. Hvis certifikatet blev genudstedt, skal du opdatere den gemte forventning via den samme betroede kanal og notere det nye serienummer, for serienummeret er det, der gør den næste rotation reviderbar.

Vær så klar over grænserne. Et fingeraftryk bekræfter, at det certifikat, du har, er det, som nogen fortalte dig at forvente. Det siger intet om, hvorvidt værten er kompromitteret, og intet om, hvorvidt tjenesten logger eller begrænser, hvad det certifikat kan nå.

Relaterede artikler