To profiler leverer begge en fil med navnet ca.crt, den ene tunnel kommer op, og den anden fejler med en kædefejl. At åbne de to filer side om side afgør det sjældent, og at slå verifikationen fra afgør det i den forkerte retning. Det spørgsmål, fejlen faktisk stiller, er snævrere: hvilket certifikat indlæser hver proces som sit tillidsanker, og er de to det samme objekt? Besvar det først, og resten af diagnosen får en retning. Filnavnet er en emballagemærkat, og stien, der er skrevet i profilen, er heller ikke autoritativ, så alt afhænger af, hvad processen faktisk læser.

Find det certifikat, klienten faktisk indlæser

OpenVPN accepterer myndigheden i to former, og formen afgør, hvilke bytes der betyder noget. En profil kan pege på en ekstern fil med ca eller indlejre certifikatet i en <ca>-blok i selve profilen. Når begge findes, vinder den indlejrede blok, og filen ved siden af profilen åbnes aldrig.

Læs den fejlende profil, og find ud af, hvilken form den bruger, før du sammenligner noget. En kopi taget fra en nabomappe eller fra den pakke, den anden profil kom fra, fortæller dig intet om, hvad denne proces stoler på. Det samme gælder stien i konfigurationen: den opløses relativt til det sted, klienten blev startet, hvilket ikke altid er den mappe, du kigger på. Læs profilen, ikke mappen.

Certifikater identificeres ved deres indhold: den offentlige nøgle, subjektet og udstederen, gyldighedsvinduet og signaturen over det hele. To filer med identiske bytes er det samme certifikat, uanset hvad de hedder, og to filer med samme navn kan være ubeslægtede myndigheder. Navnet er en emballagemærkat, ikke en identitet.

Tag fingeraftryk af begge kopier med openssl

Et fingeraftryk er en hash over certifikatets DER-kodning, den form signaturen dækker, så linjeafslutninger og overskriftstekst kan ikke påvirke det. Beregn det for hver fil, og du har to kolonseparerede hexstrenge, som enten matcher eller ikke. Der skal ikke læses noget andet i certifikatet for at besvare sammenligningsspørgsmå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 at pege openssl på selve profilen, men den læser den første certifikatblok, der optræder i filen, og en profil har normalt <cert> før <ca>. Udtræk myndighedsblokken, og tag derefter fingeraftryk af den udtrukne fil, for det er den kopi, klienten faktisk vil bruge.

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 fingeraftryk betyder, at tillidsmaterialet er det samme, og at kædefejlen har en anden årsag, hvilket er en anden undersøgelse. Forskellige fingeraftryk betyder forskellige certifikater, og det er der, næste afsnit begynder.

Læs en uoverensstemmelse, før du antager et angreb

Forskellige fingeraftryk betyder forskellige certifikater og intet mere. En genudstedelse, en rotation, en omdøbt myndighed eller en forældet samling producerer alle forskellige filer med helt legitime historikker. Hvilken der hører til udrulningen, er et spørgsmål for operatøren eller udrulningsprotokollen, ikke for filens ændringstid. Arkiver kopierer tidsstempler, så en nyere fil er ikke automatisk det korrekte anker.

En rod, der signerer sig selv, er normal, så at finde en er ikke bevis på et problem. Verifikatorens opgave er at bygge en sti fra servercertifikatet til det anker, den fik udleveret, og en kædefejl betyder normalt, at den sti ikke kunne fuldføres.

Kontroller, om den fejlende profiles anker er en myndighed, som udrulningen stadig udsteder fra. Hvis fingeraftrykket ikke matcher noget i udrulningsprotokollen, er profilen simpelthen forældet, og ingen justering på klientsiden vil rette det.

Genopret tillid uden at slå verifikationen fra

Den kortsigtede løsning er at slå verifikationen fra eller tilføje hvert certifikat i kæden som anker. Begge får meddelelsen til at forsvinde, og begge ændrer, hvilke servere klienten vil acceptere fra da af. Slå verifikationen til igen, installer det tilsigtede anker, og test igen.

Hvis kæden nu bygges, men en anden fejl opstår, er det fremskridt: navneverifikation, gyldighedsdatoer og tilbagekaldelse er separate kontroller med separate meddelelser. Opbevar fingeraftryksparret og den oprindelige fejltekst sammen i sagen, så den næste person ser, hvilket anker der blev indlæst, og hvilket der var forventet. Et par fingeraftryk er lille nok til at kopiere ind i en overdragelsesnote, og den næste forekomst tager så fem minutter i stedet for en eftermiddag.

Skaff den korrekte myndighed gennem samme autentificerede kanal, som leverede profilen. At trække et certifikat ned fra serveren, fordi dets subjekt ser bekendt ud, er en anden handling, og den udvider stille det, klienten vil stole på.

Relaterede artikler