Client-Zertifikat verloren? Nach Seriennummer widerrufen, nicht nach Name
Eine fehlende Zertifikatsdatei ist kein fehlender Datensatz. Der Widerruf arbeitet mit der Seriennummer, die die CA signiert hat, also finden Sie dieses Objekt, bevor Sie einen Ersatz ausstellen.
Die Zertifikatsdatei Ihres Clients ist weg, und der Reflex ist, den Namen zu widerrufen und ein neues Zertifikat auszustellen. Dieser Reflex lässt das ursprüngliche Zertifikat gültig, weil der Widerruf auf einer Seriennummer beruht und nicht auf einer Bezeichnung. Die CA hält mit ziemlicher Sicherheit noch eine Kopie dessen, was sie ausgestellt hat, und diese Kopie zu finden, ist die ganze Aufgabe.
Eine Datei zu verlieren heißt nicht, den Datensatz der CA zu verlieren
Eine Easy-RSA-PKI bewahrt die ausgestellten öffentlichen Zertifikate auf, und aktuelle Versionen archivieren zusätzlich Kopien nach Seriennummer im Verzeichnis certs_by_serial der PKI. Der private Schlüssel wird zum Widerrufen nicht benötigt. Entscheidend ist das genaue Zertifikat, das die CA signiert hat, und das hat die CA bereits.
Arbeiten Sie mit dem zuständigen Administrator auf einer Sicherungskopie der richtigen PKI. Ein Widerruf ist ein prüfbarer Vorgang und keine Reparatur an einer Produktionsdatenbank um Mitternacht.
Eine Kopie des eingebetteten öffentlichen Client-Zertifikats genügt ebenfalls, falls die Bereitstellung eine aufbewahrt hat.
Lesen Sie zuerst Aussteller und Seriennummer
Prüfen Sie das wiederhergestellte PEM und notieren Sie Aussteller, Seriennummer, Subject und Gültigkeitszeitraum. Die Seriennummer ist innerhalb des Bereichs eines Ausstellers eindeutig, nicht über alle CAs in Ihrer Umgebung hinweg, deshalb gehört der Aussteller zur Identität. Teilen mehrere Zertifikate ein Subject, sind es genau diese Seriennummern, die sie unterscheiden.
Gleichen Sie die Werte mit den Unterlagen der CA und mit dem Gerät oder der Person ab, von der Sie glauben, dass sie das Zertifikat besitzt.
Ein Common Name kann wiederverwendet werden, und das geschieht regelmäßig. Entscheiden Sie erst, welche Zertifikate zurückgezogen werden, wenn die Seriennummern notiert sind.
Warum der Widerruf des neuen Zertifikats nichts bewirkt
Ein Ersatz mit demselben Common Name erzeugt ein zweites Zertifikat mit einer anderen Seriennummer. Der Widerruf des Ersatzes zieht das neue zurück und lässt das ursprüngliche bis zum Ablauf gültig. Aus Sicht der CA sind das zwei unabhängige Objekte, und eine CRL listet Seriennummern statt Namen. Genau deshalb führt der CA-Index eine Zeile pro ausgestelltem Zertifikat.
Dieselbe Verwechslung erzeugt den umgekehrten Fehler: die Datei des Clients löschen und annehmen, die CA habe sie vergessen. Löschen beim Client ist kein Widerrufsereignis, und das Zertifikat funktioniert für jeden weiter, der eine Kopie besitzt.
Beide Fehler entstehen daraus, den Namen als Identität zu behandeln.
Widerrufen Sie das Zertifikat, das die Seriennummer benennt
Identifizieren Sie das Objekt, bevor Sie die CA anfassen: openssl x509 -in recovered-client.pem -noout -issuer -serial -subject -dates gibt die vier Werte in einem Durchlauf aus, und die Seriennummer ist das, was Sie mit dem CA-Archiv abgleichen. Easy-RSA hält dieses Archiv unter pki/certs_by_serial, mit einer Datei pro Seriennummer. Der Widerrufsbefehl nimmt einen Common Name statt einer Seriennummer, also kopieren Sie die archivierte Datei nach pki/issued/<common-name>.crt und lassen den Namen auf das identifizierte Objekt zeigen. Führen Sie easyrsa revoke <common-name> im PKI-Verzeichnis aus und prüfen Sie anschließend, ob die passende Zeile in index.txt auf R umgestellt wurde. Die Seriennummer bestimmt die Auswahl des Objekts, ist aber kein Argument, das der Befehl annimmt.
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
Wenn index.txt nicht R anzeigt, halten Sie an und lesen Sie den Fehler, bevor Sie eine CRL erzeugen, denn eine CRL aus einem noch gültigen Datensatz zieht nichts zurück. Erst nach dem Umschalten der Zeile führen Sie easyrsa gen-crl aus und gehen zur Verteilung der Datei über.
Veröffentlichen Sie die CRL dort, wo sie tatsächlich durchgesetzt wird
Erzeugen Sie eine neue CRL über den unterstützten Ablauf der PKI und veröffentlichen Sie sie anschließend bei jedem Prüfer, der die Widerrufe dieses Ausstellers durchsetzt.
Eine aktualisierte Datei auf der CA ändert nichts, weil das VPN die Entscheidung an seinem eigenen Prüfer abschließt. Prüfen Sie Aussteller, Gültigkeitszeitraum und widerrufene Seriennummern der CRL und stellen Sie sicher, dass der Dienst die Datei neu lädt, statt die vorherige zwischenzuspeichern. Eigentümer und Pfad zählen so viel wie der Inhalt: Eine CRL, die der Daemon nicht lesen kann, ist von keiner CRL nicht zu unterscheiden. Die Option crl-verify von OpenVPN benennt die Datei, die der Daemon liest, also prüfen Sie diesen Pfad und die Eigentümerschaft in der Serverkonfiguration.
Verifizieren Sie mit einem echten Verbindungsversuch, nicht mit dem Zeitstempel der Datei.
Wissen Sie, wann eine CRL das falsche Werkzeug ist
Ist der private Schlüssel des Ausstellers nicht mehr vertrauenswürdig, kann der Widerruf bekannter Seriennummern nicht verhindern, dass ein Unbefugter neue Zertifikate signiert. Das ist ein Übergang des Ausstellervertrauens, also eine neue CA und ein Verteilungsplan, kein weiterer Eintrag in der CRL. Dass ein früherer Administrator Zugriff hatte, ist für sich genommen kein Beweis für Schlüsselmisbrauch, also beschaffen Sie die Fakten, bevor Sie das Vertrauen neu aufbauen.
Die Ausstellungsdatenbank von Hand zu bearbeiten, um einen Statusbuchstaben umzudrehen, ersetzt keinen signierten Widerruf und hinterlässt eine CRL, die nicht zu den Datensätzen passt.
Halten Sie Seriennummer, CRL und Verteilungsschritt in einer Notiz fest, und das nächste Audit wird zur Leseübung. Das Easy-RSA-Projekt dokumentiert die unterstützten Befehle für die installierte Version, und das ist die einzige Schnittstelle, der es zu folgen lohnt.