Samme filnavn ca.crt, annet sertifikat: hva som skal sammenlignes
To profiler kan levere en ca.crt med ulikt innhold. Ta fingeravtrykk av det prosessen laster inn, og kontroller deretter at det er tillitsankeret du mente.
To profiler leverer begge en fil som heter ca.crt, den ene tunnelen kommer opp og den andre feiler med en kjedefeil. Å åpne de to filene side ved side avgjør det sjelden, og å slå av verifiseringen avgjør det i feil retning. Spørsmålet feilen egentlig stiller er smalere: hvilket sertifikat laster hver prosess inn som sitt tillitsanker, og er de to samme objekt? Svar på det først, og resten av diagnosen får en retning. Filnavnet er en emballasjeetikett, og stien som er skrevet i profilen er heller ikke autoritativ, så alt avhenger av hva prosessen faktisk leser.
Finn sertifikatet klienten faktisk laster inn
OpenVPN godtar myndigheten i to former, og formen bestemmer hvilke byte som betyr noe. En profil kan peke på en ekstern fil med ca, eller legge sertifikatet inn i en <ca>-blokk i selve profilen. Når begge finnes, vinner den innebygde blokken, og filen ved siden av profilen åpnes aldri.
Les profilen som feiler, og finn ut hvilken form den bruker før du sammenligner noe. En kopi hentet fra en nabomappe, eller fra pakken den andre profilen kom fra, forteller deg ingenting om hva denne prosessen stoler på. Det samme gjelder stien i konfigurasjonen: den løses relativt til stedet klienten ble startet, som ikke alltid er mappen du ser på. Les profilen, ikke mappen.
Sertifikater identifiseres av innholdet: den offentlige nøkkelen, subjektet og utstederen, gyldighetsvinduet og signaturen over alt dette. To filer med identiske byte er samme sertifikat uansett hva de heter, og to filer med samme navn kan være ubeslektede myndigheter. Navnet er en emballasjeetikett, ikke en identitet.
Ta fingeravtrykk av begge kopiene med openssl
Et fingeravtrykk er en hash over sertifikatets DER-koding, formen signaturen dekker, så linjeslutt og overskriftstekst kan ikke påvirke det. Regn det ut for hver fil, og du har to kolonseparerte hexstrenger som enten stemmer eller ikke. Ingenting annet i sertifikatet må leses for å svare på sammenligningsspørsmålet.
openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256
Det er fristende å peke openssl på selve profilen, men det leser den første sertifikatblokken som forekommer i filen, og en profil har vanligvis <cert> før <ca>. Trekk ut myndighetsblokken, og ta deretter fingeravtrykk av den uttrukne filen, for det er kopien klienten faktisk vil bruke.
sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256
Identiske fingeravtrykk betyr at tillitsmaterialet er det samme og at kjedefeilen har en annen årsak, noe som er en annen undersøkelse. Ulike fingeravtrykk betyr ulike sertifikater, og det er der neste avsnitt begynner.
Les et avvik før du antar et angrep
Ulike fingeravtrykk betyr ulike sertifikater og ikke noe mer. En nyutstedelse, en rotasjon, en omdøpt myndighet eller en utdatert samling gir alle ulike filer med helt legitime historikker. Hvilken som hører til utrulleringen, er et spørsmål for operatøren eller utrulleringsprotokollen, ikke for filens endringstid. Arkiver kopierer tidsstempler, så en nyere fil er ikke automatisk det riktige ankeret.
En rot som signerer seg selv, er normal, så å finne en er ikke bevis på et problem. Verifisererens oppgave er å bygge en sti fra serverens sertifikat til ankeret den fikk, og en kjedefeil betyr vanligvis at den stien ikke kunne fullføres.
Kontroller om den feilende profilens anker er en myndighet utrulleringen fortsatt utsteder fra. Hvis fingeravtrykket ikke stemmer med noe i utrulleringsprotokollen, er profilen rett og slett utdatert, og ingen justering på klientsiden vil rette det.
Reparer tilliten uten å slå av verifiseringen
Den kortsiktige løsningen er å slå av verifiseringen eller legge til hvert sertifikat i kjeden som anker. Begge får meldingen til å forsvinne, og begge endrer hvilke servere klienten vil godta fra da av. Slå verifiseringen på igjen, installer det tiltenkte ankeret og test på nytt.
Hvis kjeden nå bygges, men en annen feil dukker opp, er det fremgang: navneverifisering, gyldighetsdatoer og tilbakekalling er separate kontroller med separate meldinger. Hold fingeravtrykkparet og den opprinnelige feilteksten sammen i saken, slik at neste person ser hvilket anker som ble lastet og hvilket som var forventet. Et par fingeravtrykk er lite nok til å lime inn i et overleveringsnotat, og neste forekomst tar da fem minutter i stedet for en ettermiddag.
Skaff den riktige myndigheten gjennom samme autentiserte kanal som leverte profilen. Å trekke et sertifikat fra serveren fordi subjektet ser kjent ut, er en annen handling, og den utvider stille det klienten vil stole på.