Het verkeerde VPN-certificaat ingetrokken? Herstelopties en grenzen
Identificeer de uitgever, het serienummer en de redencode voordat je de CA aanraakt. Definitieve intrekking, certificaatopschorting en een toelatingspauze zijn drie reparaties.
Iemand heeft een certificaat in de CA-console ingetrokken en nu kan een gebruiker geen verbinding maken. De eerste reflex is de ongedaanmaking zoeken, en voor de meeste PKI's bestaat die niet: intrekking is een verklaard feit over een serienummer, en de ondersteunde weg terug is een nieuw certificaat, geen omgekeerd record. Werk de onderstaande controles op volgorde af, want welke reparatie je mag gebruiken hangt af van de redencode en van of de sleutel ooit is blootgesteld.
Identificeer het certificaat, niet de persoon
Gewone namen herhalen zich. Een gebruiker die vorig kwartaal opnieuw is ingeschreven kan twee certificaten hebben met dezelfde CN en verschillende serienummers, en het intrekken van het ene laat het andere werken. Stel eerst het exacte object vast:
openssl x509 -in client.crt -noout -serial -issuer -subject -dates
openssl crl -in ca.crl -noout -text | head -40
Noteer het serienummer, de uitgever, de intrekkingsdatum en de reden die in de CRL is vastgelegd. Bevestig daarna welke apparaten dat serienummer presenteren, want een ingetrokken certificaat kan nog op een laptop, een telefoon en een reserveswitch staan, en een vervanging die maar één ervan bereikt veroorzaakt een tweede incident.
Een snelle gedragscontrole bevestigt de toestand zonder iets te wijzigen:
openssl verify -crl_check -CAfile ca.crt -CRLfile ca.crl client.crt
Als die het certificaat als ingetrokken meldt, zijn de CRL en de client het eens; als het schoon verifieert, is de client die je vasthoudt niet de ingetrokken en gaat het zoeken verder.
Controleer of de CA opschorting of definitieve intrekking heeft gebruikt
RFC 5280 definieert certificateHold als een tijdelijke toestand en removeFromCRL als het signaal dat die vrijgeeft. Die levenscyclus is echt, maar het is geen algemene ongedaanmaakknop. De redencode lezen vertelt je of de uitgever ooit van plan was vrijgave te ondersteunen.
De valkuil is aannemen dat een tijdelijke bedoeling een tijdelijk record betekent. Als de CA-regel keyCompromise of cessationOfOperation bevat, is het certificaat definitief ingetrokken, wat de persoon die op de knop drukte ook bedoelde. Omgekeerd is een regel met certificateHold op een CA die geen opschortingsvrijgave implementeert in de praktijk definitief, omdat niets ooit de vrijgave zal publiceren.
CA's op basis van OpenSSL illustreren de grens. Het commando ca accepteert -crl_reason-waarden, waaronder certificateHold en removeFromCRL, maar genereert geen delta-CRL's — de OpenSSL CA-documentatie noemt die beperking voor zijn CRL-uitvoer. Een volledige CRL die het serienummer simpelweg weglaat is een ander publicatiemodel dan een delta die zegt "deze regel is vrijgegeven", dus het plakken van removeFromCRL in een op OpenSSL gebaseerde VPN-CA levert niet de door de standaard gedefinieerde vrijgave op.
Als de sleutel blootgesteld kan zijn, vervang hem
Een ingetrokken certificaat is de verklaring dat deze sleutel misschien niet meer te vertrouwen is. Als de intrekking inhoudelijk juist was — laptop verloren, sleutel naar een gedeelde schijf gekopieerd, privésleutel in een ticket geplakt — dan draait het herstellen van hetzelfde certificaat een beveiligingsbeslissing terug die werkte zoals bedoeld.
Geef een nieuw sleutelpaar uit via het inschrijvingsproces, verspreid het nieuwe profiel en laat het oude serienummer voor zijn hele levensduur ingetrokken. Werk alles bij dat identiteit vastpint op serienummer of vingerafdruk, inclusief toegangslijsten, apparaatinventarissen en monitoring die een bepaald certificaat verwacht.
Het gemaksargument om de oude te herstellen is reëel, maar er moet uitdrukkelijk antwoord op komen, niet stilzwijgend. "De gebruiker heeft vandaag toegang nodig" is een reden om de uitgifte te versnellen, geen reden om de intrekking van een sleutel ongedaan te maken waarover je geen verantwoording kunt afleggen.
Als het een administratieve fout was, vervang dan onder controle
Wanneer de intrekking gewoon onjuist was en de sleutel nooit is blootgesteld, is de reparatie nog steeds een gecontroleerde vervanging en geen bewerking. Gebruik het ondersteunde proces van de uitgever, houd het serienummer en de uitgiftegeschiedenis intact, en vermijd de twee verleidelijke kortere wegen: het statuskarakter in index.txt van R terug naar V draaien, en de uitgifteregel verwijderen zodat een nieuw certificaat het serienummer kan hergebruiken.
Op een OpenSSL-CA is de database tabgescheiden en makkelijk verkeerd te lezen, wat handmatig bewerken aantrekkelijk maakt:
awk -F'\t' '$1=="R" {print $4, $3, $6}' index.txt
Lees hem, schrijf hem niet. Het bewerken van het bestand verandert de volgende CRL zonder enig auditspoor, en elke tweede CA-instantie of back-up die de oorspronkelijke regel nog heeft, zal het er later mee oneens zijn.
Nadat je de vervanging hebt uitgegeven, publiceer een verse CRL via het normale mechanisme en laat clients die ophalen. Een CRL verwijderen, de levensduur tot niets verkorten of de intrekkingscontrole in het clientprofiel uitschakelen repareert één gebruiker door elke andere intrekking die de CA ooit publiceerde te verzwakken.
Bevestig een verse toelating en bewaar het record
Test met een nieuwe verbinding, niet met de sessie die al open was. Een levende tunnel voert de toelatingscontroles van een nieuwe handdruk misschien niet opnieuw uit, en CRL-caches betekenen dat een client kan blijven verbinden tot hij ververst. Verbreek de verbinding, maak opnieuw verbinding en bevestig in het serverlog welk serienummer is toegelaten.
Leg vast wat er gebeurde terwijl het nog vers is: welk serienummer is ingetrokken, door wie, met welke reden, welke vervanging is uitgegeven en wanneer de CRL opnieuw is gepubliceerd. Dat record maakt de volgende intrekkingsbeoordeling mogelijk en is ook het bewijs dat de fout is afgehandeld in plaats van verborgen.
Gebruik voor korte schorsingen in de toekomst een toelatingspauzemechanisme als de uitrol er een heeft — een account dat in de identiteitslaag is uitgeschakeld, een verwijderd groepslidmaatschap, een achtergehouden clientprofiel. Dat houdt een tijdelijke beleidsbeslissing gescheiden van de vraag of een uitgegeven certificaat nog betrouwbaar is, en precies dat onderscheid ging de eerste keer verloren.