Din klients certifikatfil är borta, och reflexen är att återkalla namnet och utfärda ett nytt. Den reflexen lämnar det ursprungliga certifikatet giltigt, eftersom återkallelse bygger på ett serienummer och inte på en etikett. CA:n har nästan säkert fortfarande en kopia av det den utfärdade, och att hitta den kopian är hela uppgiften.

Att tappa en fil är inte att tappa CA:ns post

En Easy-RSA-PKI behåller de offentliga certifikat den utfärdat, och nuvarande versioner arkiverar även kopior per serie i PKI:ns certs_by_serial-katalog. Den privata nyckeln behövs inte för att återkalla något. Det som spelar roll är det exakta certifikatet som CA:n signerade, och det har CA:n redan.

Arbeta på en säkerhetskopia av rätt PKI, tillsammans med administratören som äger den. Återkallelse är en granskningsbar åtgärd, inte en reparation av en produktionsdatabas vid midnatt.

En kopia av klientens inbäddade offentliga certifikat fungerar också, om driftsättningen har sparat en.

Läs utfärdaren och serienumret först

Granska den återställda PEM-filen och skriv ned utfärdaren, serienumret, subjektet och giltighetsperioden. Serienumret är unikt inom en utfärdares omfång, inte över alla CA:er i din miljö, så utfärdaren är en del av identiteten. Om flera certifikat delar ett subjekt är det just serienumren som skiljer dem åt.

Jämför värdena med CA:ns register och med enheten eller personen som du tror har certifikatet.

Ett vanligt namn kan återanvändas, och det görs oftast. Bestäm inte vilka certifikat som ska dras tillbaka förrän serienumren är nedskrivna.

Varför återkallelse av det nya certifikatet inte gör något

Att utfärda en ersättare med samma vanliga namn skapar ett andra certifikat med ett annat serienummer. Återkallelse av ersättaren drar tillbaka det nya och lämnar det ursprungliga giltigt till dess att det löper ut. Från CA:ns perspektiv är det två oberoende objekt, och en CRL listar serienummer och inte namn. CA-indexet håller en rad per utfärdat certifikat just därför.

Samma förvirring skapar det omvända felet: att radera klientens fil och anta att CA:n glömde den. Radering på klienten är inte en återkallelsehändelse, och certifikatet fortsätter att fungera för alla som har en kopia.

Båda felen kommer av att behandla namnet som identiteten.

Återkalla certifikatet som serienumret anger

Identifiera objektet innan du rör CA:n: openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates skriver ut de fyra värdena i en enda körning, och serienumret är det du matchar mot CA:ns arkiv. Easy-RSA förvarar arkivet under pki/certs_by_serial, med en fil per serienummer. Återkallelsekommandot tar ett vanligt namn och inte ett serienummer, så kopiera den arkiverade filen till pki/issued/<common-name>.crt och låt namnet peka på objektet du identifierade. Kör easyrsa revoke <common-name> från PKI-katalogen och kontrollera sedan att motsvarande rad i index.txt har ändrats till R. Serienumret är hur du väljer objektet, inte ett argument som kommandot accepterar.

openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates
cp pki/certs_by_serial/A1B2C3D4.pem pki/issued/client-01.crt
./easyrsa revoke client-01
grep -n client-01 pki/index.txt
./easyrsa gen-crl

Om index.txt inte visar R, stanna och läs felet innan du genererar en CRL, eftersom en CRL byggd från en post som fortfarande är giltig inte drar tillbaka något. Först efter att raden ändrats kör du easyrsa gen-crl och går vidare till distribution av filen.

Publicera CRL:n där den faktiskt tillämpas

Generera en ny CRL via PKI:ns stödda arbetsflöde och publicera den sedan hos varje verifierare som tillämpar denna utfärdares återkallelser.

En uppdaterad fil som ligger på CA:n ändrar ingenting, eftersom VPN avslutar beslutet hos sin egen verifierare. Kontrollera CRL:ns utfärdare, giltighetsperiod och de återkallade serienumren, och bekräfta att tjänsten läser in filen på nytt i stället för att cacha den föregående. Ägarskap och sökväg spelar lika stor roll som innehåll: en CRL som daemonen inte kan läsa går inte att skilja från ingen CRL alls. OpenVPN:s crl-verify-alternativ anger filen som daemonen läser, så kontrollera den sökvägen och filens ägarskap i serverkonfigurationen.

Verifiera med ett verkligt anslutningsförsök, inte med filens tidsstämpel.

Vet när en CRL är fel verktyg

Om utfärdarens privata nyckel inte längre är betrodd kan återkallelse av kända serienummer inte hindra en obehörig innehavare från att signera nya certifikat. Det är en övergång i utfärdarens förtroende, alltså en ny CA och en distributionsplan, inte ännu en post i CRL:n. Att en tidigare administratör har haft åtkomst är inte i sig bevis för att nyckeln missbrukats, så skaffa fakta innan du bygger upp förtroendet igen.

Manuell redigering av utfärdandedatabasen för att vända en statusbokstav ersätter inte en signerad återkallelse och lämnar CRL:n inkonsekvent med posterna.

Håll serienumret, CRL:n och distributionssteget i en enda anteckning, och nästa revision blir en läsövning. Easy-RSA-projektet dokumenterar de stödda kommandona för den version du har installerat, och det är det enda gränssnittet som är värt att följa.

Relaterade artiklar