Att läsa ett certifikats offentliga fält kräver aldrig att man visar den privata nyckel som hör till, och verktygen för det finns i varje system som avslutar en VPN. Risken ligger ett steg tidigare: filen du fick är kanske inte ett certifikat alls. Ett PEM-certifikat, en DER-binär, ett PKCS#12-paket och en OpenVPN profil kan komma med samma namn och innehålla mycket olika material, så identifiera behållaren innan du väljer kommando.

Tre fakta avgör vilket kommando som är säkert: vad filen innehåller, vad du behöver läsa ut ur den och vem som ser utdata. Får du någon av dem fel blir granskningen själv incidenten.

Vilken av tre filer du fick

Ett PEM-certifikat är text med synliga BEGIN- och END-markörer, en DER-fil är binär och kräver en flagga för indataformat, och ett paket är en behållare som kan innehålla en nyckel bredvid certifikatet. file server.crt skiljer text från binärt innehåll på en sekund, och en blick på första raden skiljer ett bart certifikat från en profil som bäddar in ett. Gissningar här är det som gör en granskning till en incident.

Om filen är en profil och inte ett certifikat, behandla den som en autentiseringsuppgift tills motsatsen bevisats. Det antagandet kostar inget och förhindrar det vanligaste misstaget i hela uppgiften.

Läsa de offentliga fälten i ett PEM-certifikat

För ett certifikat du har tillstånd att granska skriver underkommandot x509 med -noout ut de fält du väljer och inget annat. Att undertrycka kroppen är det som håller utdata till metadata, vilket också gör det säkert att klistra in i ett ärende. Väljarna nedan är de offentliga, och dokumentationen för openssl x509 listar resten.

openssl x509 -in server.crt -noout -subject -issuer -dates -fingerprint -sha256

På ett lokalt genererat testcertifikat skriver kommandot ut en subject- och issuer-rad, paret notBefore och notAfter samt ett SHA-256-fingeravtryck. Fälten identifierar objektet; de upprättar ingen giltig förtroendekedja, vilket är en separat verifieringsuppgift med eget kommando och eget svar. En kedjefil kan också bara skriva ut det första certifikatet om du inte själv går igenom filen. Att jämföra två filer på detta sätt kostar ett kommando och avgör vilket av dem motparten faktiskt presenterar.

Paket som innehåller en nyckel bredvid certifikatet

En fil med .p12 eller .pfx kan bära en privat nyckel, och tolkningskommandot skriver ut den om du inte undertrycker den delen av utdata. Med -nokeys rapporterar samma kommando fortfarande behållarens struktur, inklusive en övertäckt nyckelpåse, utan att avge något nyckelmaterial; tar du bort flaggan visas ett nyckelblock i terminalen och i skalhistoriken.

openssl pkcs12 -in bundle.p12 -nokeys -info -passin env:P12PASS

En OpenVPN-profil bäddar in samma material som text, så gränsen är synlig om du vet var du ska titta. Offentligt material ligger mellan BEGIN CERTIFICATE och END CERTIFICATE, medan allt mellan BEGIN PRIVATE KEY och dess matchande END-rad är nyckeln och inte får lämna värden. Att kopiera profilen i sin helhet publicerar båda.

Skaffa referensvärdet från annat håll

Ett fingeravtryck som läses från anslutningen du försöker verifiera bevisar ingenting, eftersom den part du misstror har lämnat det. Det är inte ett argument mot fingeravtryck; det är ett argument om proveniens. Jämför värdet med ett som hämtats via en kanal som motparten inte kan skriva till, till exempel certifikatet som publicerats i ett internt arkiv eller hashen som tryckts i en signerad ändringsanteckning.

Där ett förtroendelager utför validering, låt det göra det, och läs felet det producerar i stället för att ersätta det med din egen jämförelse. Skillnaden som spelar roll är vem som lämnade referensen, inte vilken hashfunktion som användes.

Dela resultatet, och vad du gör efter ett misstag

Skicka det exakta valideringsfelet, relevanta datum och bara de identitetsuppgifter mottagaren behöver. Interna värdnamn och kontoinriktningar är känsliga även när ingen nyckel finns, och en offentlig klistra-in-tjänst är fel mål för något av det. Klistra in i ärendet, inte i en tillfällig buffert som någon annan delar.

Om nyckelmaterial trots allt dök upp på skärmen eller i en fil, behandla det som komprometterat och rotera det i stället för att hoppas att ingen tittade. Skriv sedan ned vilken fil som granskades, vilket kommando som användes och vart utdata tog vägen, eftersom den anteckningen är det som förvandlar en skrämsel till en rutin. Rotation är billigt jämfört med kostnaden för att anta att ingen sparade en skärmbild, och samma anteckning talar om för nästa ingenjör vilka filer som alls rördes. Gör båda innan ärendet stängs.

Relaterade artiklar