Et fingeravtrykk er bare så godt som kanalen som fortalte deg hva du skulle forvente. Hvis verdien du sammenligner med kom over den samme forbindelsen du tester, beviser sammenligningen ingenting utover at den som kontrollerer forbindelsen, er konsistent. Kontrollen må kjøre i en fast rekkefølge, og et mislykket trinn bør stoppe deg i stedet for å skyve deg videre til det neste. Her er rekkefølgen jeg bruker når en VPN-klient rapporterer at et sertifikat er endret.

Navngi objektet før du navngir verdien

Avgjør om den forventede verdien tilhører løvsertifikatet til serveren, den utstedende CA-en eller den offentlige nøkkelen inne i løvet. Det er tre forskjellige kontroller, og de feiler på forskjellige måter. Et CA-fingeravtrykk som samsvarer, pinner ikke serveren, og en hash av den offentlige nøkkelen overlever bevisst en gjenutstedelse som beholder samme nøkkel.

Skriv også ned algoritmen. SHA-256 er den normale forventningen nå, men eldre verktøy skrev ut SHA-1 med mindre du ba om noe annet, og en hex-verdi på 40 tegn er et tegn på at du er i ferd med å sammenligne to forskjellige ting.

Hent den forventede verdien over en andre kanal

Den andre kanalen må være en som parten du verner deg mot, ikke kan skrive til. Et klargjøringssystem du allerede autentiserer deg mot, en trykt oppføring i et pengeskap, en konfigurasjonsdatabase eller et signert dokument levert av en annen prosess kvalifiserer alle. En chatmelding fra en kollega, en støtteside nådd via et søkeresultat og alt som limes inn i terminalen du allerede feilsøker i, kvalifiserer ikke.

Be om den fulle verdien og algoritmen, aldri et prefiks. Kolonner og store eller små bokstaver spiller ingen rolle, men avkorting gjør en kontroll på 256 bit til et gjettespill.

Hvis ingen kan produsere den forventede verdien fra en uavhengig kilde, er det ærlige resultatet at dette sertifikatet ikke kan verifiseres i dag. Å si det er bedre enn å pinne det klienten nettopp viste, som gjør en advarsel til en vane.

Trekk ut verdien på din side

For en sertifikatfil er kommandoen openssl x509 -in server.crt -noout -fingerprint -sha256. Den eksplisitte digesten er viktig: uten den avhenger utdataene av OpenSSL-versjonen din. Resultatet er en kolonadskilt hex-streng, så fjern kolonnene og gjør begge sider om til små bokstaver før du sammenligner.

For et endepunkt som snakker TLS direkte, koble til og pump sertifikatet ut: openssl s_client -connect vpn.example.com:443 -servername vpn.example.com < /dev/null | openssl x509 -noout -fingerprint -sha256. Dette fungerer for et webadministrasjonspanel eller en TLS-lytter, ikke for OpenVPN, der kontrollkanalen ligger inne i tunnelen. For OpenVPN, les sertifikatet fra profilen på disken i stedet for å prøve å fange det fra sockelen.

Sammenligningen bør være mekanisk. Normaliser begge verdiene med tr -d ':' og omgjøring til små bokstaver, og sammenlign deretter hele strengen. Å gjøre det på øyet er måten et samsvarende prefiks skjuler en forskjell i den siste byten. Hvis strengene er forskjellige, behandle forskjellen som reell før du leter etter en forklaring.

Stoppbetingelser

Stopp hvis objektet er forskjellig, fordi et CA-fingeravtrykk ikke kan frikjenne et løvsertifikat, og et løv kan ikke frikjenne CA-en. Stopp hvis algoritmen er forskjellig, fordi en SHA-1-verdi sammenlignet med en SHA-256-verdi ikke sier deg noe. Stopp hvis fingeravtrykket samsvarer, men sertifikatet er utløpt, tilbakekalt eller utstedt til et annet navn; en samsvarende hash er ikke en gyldighetskontroll og reparerer ikke en brutt kjede. Stopp også hvis serienummeret ikke samsvarer med serienummeret i oppføringen du kontrollerer mot, fordi det er den billigste måten å oppdage et byttet sertifikat.

Stopp hvis den nye verdien kom gjennom kanalen du testet. Rotasjon kan lovlig endre et fingeravtrykk, men erstatningsverdien må fortsatt komme fra den betrodde prosessen, ikke fra advarselsdialogen som utløste spørsmålet.

Stopp hvis den foreslåtte rettelsen er å slå av vertsnavn- eller kjedeverifisering. Et fingeravtrykk legger til en begrensning på de normale kontrollene; det erstatter dem ikke med mindre utrullingen bevisst har valgt en modell med bare pin, og det valget har sine egne driftskostnader.

Etter sammenligningen

Noter hva du sammenlignet, hvor den forventede verdien kom fra, og når. Hvis sertifikatet ble gjenutstedt, oppdater den lagrede forventningen via samme betrodde kanal og noter det nye serienummeret, fordi serienummeret er det som gjør neste rotasjon reviderbar.

Vær så klar over grensene. Et fingeravtrykk bekrefter at sertifikatet du har, er det noen fortalte deg å forvente. Det sier ingenting om hvorvidt verten er ukompromittert, og ingenting om hvorvidt tjenesten logger eller begrenser hva det sertifikatet kan nå.

Relaterte artikler