Het certificaatbestand van je client is weg, en de reflex is de naam intrekken en een nieuwe uitgeven. Die reflex laat het oorspronkelijke certificaat geldig, omdat intrekking op een serienummer werkt en niet op een label. De CA bewaart vrijwel zeker nog een kopie van wat zij heeft uitgegeven, en die kopie vinden is de hele opgave.

Een bestand verliezen is niet het record van de CA verliezen

Een Easy-RSA-PKI bewaart de openbare certificaten die zij heeft uitgegeven, en huidige versies archiveren ook kopieën per serie in de map certs_by_serial van de PKI. De privésleutel is niet nodig om iets in te trekken. Wat telt is het exacte certificaat dat de CA heeft ondertekend, en dat heeft de CA al.

Werk op een reservekopie van de juiste PKI, samen met de beheerder die haar bezit. Intrekking is een controleerbare handeling en geen reparatie aan een productiedatabase middernacht.

Een kopie van het ingebedde openbare certificaat van de client werkt ook, als de uitrol er een heeft bewaard.

Lees eerst de uitgever en het serienummer

Inspecteer de herstelde PEM en noteer de uitgever, het serienummer, het subject en de geldigheidsperiode. Het serienummer is uniek binnen het bereik van één uitgever, niet over alle CA's in je omgeving, dus de uitgever maakt deel uit van de identiteit. Als meerdere certificaten een subject delen, zijn het juist die serienummers die ze onderscheiden.

Vergelijk de waarden met de administratie van de CA en met het apparaat of de persoon waarvan je denkt dat die het certificaat heeft.

Een algemene naam kan opnieuw worden gebruikt, en dat gebeurt meestal ook. Beslis niet welke certificaten worden ingetrokken voordat de serienummers zijn opgeschreven.

Waarom het intrekken van het nieuwe certificaat niets doet

Een vervanger met dezelfde algemene naam uitgeven maakt een tweede certificaat met een ander serienummer. Het intrekken van de vervanger trekt de nieuwe in en laat de oorspronkelijke geldig tot die verloopt. Vanuit de CA gezien zijn het twee onafhankelijke objecten, en een CRL vermeldt serienummers en geen namen. De CA-index houdt precies daarom één rij per uitgegeven certificaat bij.

Dezelfde verwarring veroorzaakt de omgekeerde fout: het bestand van de client verwijderen en aannemen dat de CA het is vergeten. Verwijderen op de client is geen intrekkingsgebeurtenis, en het certificaat blijft werken voor iedereen die een kopie heeft.

Beide fouten komen voort uit het behandelen van de naam als de identiteit.

Trek het certificaat in dat het serienummer noemt

Identificeer het object voordat je de CA aanraakt: openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates drukt de vier waarden in één keer af, en het serienummer is wat je met het CA-archief vergelijkt. Easy-RSA bewaart dat archief onder pki/certs_by_serial, met één bestand per serienummer. Het intrekkingscommando neemt een algemene naam en geen serienummer, dus kopieer het gearchiveerde bestand naar pki/issued/<common-name>.crt en laat de naam naar het geïdentificeerde object wijzen. Voer easyrsa revoke <common-name> uit vanuit de PKI-map en controleer daarna of de overeenkomende rij in index.txt is omgezet naar R. Het serienummer is hoe je het object kiest, niet een argument dat het commando aanvaardt.

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

Als index.txt niet R toont, stop dan en lees de fout voordat je een CRL genereert, want een CRL die uit een nog geldig record is opgebouwd, trekt niets in. Pas nadat de rij is omgezet, voer je easyrsa gen-crl uit en ga je verder met de distributie van het bestand.

Publiceer de CRL waar die daadwerkelijk wordt afgedwongen

Genereer een nieuwe CRL via de ondersteunde werkwijze van de PKI en publiceer die vervolgens bij elke verifier die de intrekkingen van deze uitgever afdwingt.

Een bijgewerkt bestand op de CA verandert niets, omdat de VPN de beslissing bij zijn eigen verifier afrondt. Controleer de uitgever van de CRL, de geldigheidsperiode en de ingetrokken serienummers, en bevestig dat de dienst het bestand opnieuw laadt in plaats van het vorige te cachen. Eigendom en pad zijn even belangrijk als inhoud: een CRL die de daemon niet kan lezen, is niet te onderscheiden van geen CRL. De optie crl-verify van OpenVPN noemt het bestand dat de daemon leest, dus controleer dat pad en het eigenaarschap van het bestand in de serverconfiguratie.

Verifieer met een echte verbindingspoging, niet met de tijdstempel van het bestand.

Weet wanneer een CRL het verkeerde gereedschap is

Als de privésleutel van de uitgever niet meer wordt vertrouwd, kan het intrekken van bekende serienummers niet verhinderen dat een onbevoegde houder nieuwe certificaten ondertekent. Dat is een overgang van uitgeververtrouwen, dus een nieuwe CA en een distributieplan, geen extra regel in de CRL. Dat een voormalige beheerder toegang had, is op zichzelf geen bewijs dat de sleutel is misbruikt, dus verzamel de feiten voordat je het vertrouwen herbouwt.

De uitgeefdatabase met de hand bewerken om een statusletter om te draaien is geen vervanging voor een ondertekende intrekking, en het laat de CRL inconsistent met de administratie achter.

Houd het serienummer, de CRL en de distributiestap in één notitie, en de volgende audit wordt een leesoefening. Het Easy-RSA-project documenteert de ondersteunde opdrachten voor de versie die je hebt geïnstalleerd, en dat is de enige interface die het volgen waard is.

Gerelateerde artikelen