Widerrufener Client verbindet weiter: Die Liste kam nie an
Widerruf ist eine Eingabe für die Zertifikatsprüfung, kein Befehl, der eine Sitzung beendet. Vergleichen Sie, wie eine neue Verbindung und ein laufender Tunnel die Liste sehen.
Ein Widerruf dringt nie in einen laufenden Tunnel ein, um eine Sitzung zu löschen. Die Liste ist eine Eingabe für die Zertifikatsprüfung und wird während des Steuerkanal-Austauschs konsultiert, mit dem eine TLS-Sitzung beginnt. Diese eine Tatsache erklärt beide Überraschungen: Ein widerrufener Client verbindet sich erneut, weil die Liste den Prüfer nie erreichte, und eine bestehende Sitzung überlebt, weil niemand etwas erneut geprüft hat.
Eine Liste ist eine Eingabe, keine Aktion
Beim Sitzungsaufbau prüft der Server das Client-Zertifikat gegen seine Vertrauensanker, und die Widerrufsanweisung fügt dieser Entscheidung eine Listensuche hinzu. Die Prüfung findet auf dem Server statt, daher kann der Client nicht sehen, dass sein Zertifikat widerrufen wurde, und bietet weiter dasselbe an. Ein Profil, das noch verbindet, belegt also nur, dass irgendein Prüfer die Kette akzeptiert hat, nicht dass der Widerruf versagt hat.
Die Liste ist selbst ein signiertes Objekt mit Ausstellungsdatum und nächstem Aktualisierungsdatum. Eine fremde Liste, eine von einer anderen Behörde signierte oder eine, deren nächstes Aktualisierungsdatum überschritten ist, ersetzt die aktuelle nicht, und ob eine veraltete Liste abgelehnt oder stillschweigend akzeptiert wird, hängt vom Einsatz ab.
Neue Verbindung gegenüber laufender Sitzung
Ein Widerruf wird beim Aufbau oder bei der Neuverhandlung einer Sitzung bewertet, nicht gegen den Datenkanal bei jedem Paket. Ein bereits verbundener Client hält Verkehrsschlüssel und lässt daher weiter Pakete durch, nachdem sein Zertifikat auf der Liste erscheint. Das standardmäßige Neuverhandlungsintervall wird in Stunden gemessen, weshalb eine aktualisierte Liste für Neuankömmlinge greifen kann, während ein laufender Tunnel bestehen bleibt.
| Situation | What the list does | When it applies |
|---|---|---|
| Fresh connection | Blocks the handshake | At verification, immediately |
| Renegotiation | Blocks the new exchange | At the next renegotiation interval |
| Established data channel | Nothing | Until the session ends |
Sofortige Durchsetzung erfordert eine bewusste Handlung und nicht nur die Liste. Ein Neustart des Dienstes zwingt jeden Client, sich erneut zu verbinden, während das Beenden einer einzelnen Sitzung über die Verwaltungsschnittstelle die anderen unberührt lässt. Wählen Sie pro Vorfall eine Möglichkeit und notieren Sie, welche Sie genutzt haben. Die beiden Optionen haben eine unterschiedliche Reichweite, und das ist die eigentliche Entscheidung.
Liefern Sie die Datei, die der Prüfer tatsächlich liest
Die Liste muss aus dem Datensatz der Behörde erzeugt und dann auf jede Maschine kopiert werden, die Zertifikate prüft. Sie auf dem CA-Host zu erzeugen und nie auf dem Server zu installieren, ist der häufigste Fehler, und er sieht genau wie eine defekte Widerrufsfunktion aus.
ca ca.crt
cert server.crt
key server.key
crl-verify /etc/openvpn/crl.pem
Zwei Details entscheiden, ob die Datei wirklich gelesen wird. Ein relativer Pfad wird gegen das Konfigurationsverzeichnis aufgelöst, sodass eine Kopie im Home-Verzeichnis eines Bedieners möglicherweise nie gefunden wird. Und der Daemon gibt nach dem Start meist seine Rechte ab, sodass das Laufzeitkonto auf jedem übergeordneten Verzeichnis Suchrecht und auf der Datei Leserecht braucht. Prüfen Sie beides mit dem Laufzeitkonto statt mit root, sonst beweist der Test das Falsche.
Auf systemd-Hosts kann eine gehärtete Unit den Pfad ebenfalls verbergen, mit einer schreibgeschützten Ansicht oder einem geschützten Systemverzeichnis. Innerhalb des Dienstes ist das nicht von einer fehlenden Datei zu unterscheiden, prüfen Sie also die Einschränkungen der Unit, bevor Sie einen Berechtigungsfehler suchen. Lesen Sie die Unit-Datei, bevor Sie den Dateimodus beschuldigen.
Bestätigen Sie auf dem Server, nicht auf dem Client
Das Serverprotokoll benennt, was geschah: das Öffnen der Liste, das Laden oder eine fehlgeschlagene Prüfung mit der widerrufenen Seriennummer. Der Client meldet nur einen allgemeinen Handshake-Fehler, weshalb Client-Protokolle ein schlechter Ort für eine Widerrufsentscheidung sind.
Prüfen Sie mit einem frischen Versuch aus dem widerrufenen Profil und hören Sie dann auf. Eine erfolgreiche Verbindung aus diesem Profil ist das Signal, den Dateipfad und das Laufzeitkonto zu untersuchen, nicht anzunehmen, die Liste sei falsch gewesen. Behalten Sie diesen erfolgreichen Versuch als Abnahmetest, und zählen Sie keine Wiederverbindung, die Sie nicht beobachtet haben.
Was nichts widerruft
Das Profil von einem Laptop zu löschen, die Zertifikatsdatei vom Client zu entfernen oder dem Nutzer zu sagen, er solle aufhören sich zu verbinden, ändert nichts auf dem Server. Das Zertifikat bleibt gültig, bis die Behörde den Widerruf erfasst und der Prüfer die resultierende Liste liest.
Deshalb lohnt es sich, die Kette aufzuschreiben: Widerruf erfassen, die Liste erzeugen und signieren, genau diese Datei verteilen und bestätigen, dass das Dienstkonto sie lesen kann. Jedes Glied ist kurz, und fehlt eines, verbindet sich ein widerrufener Client munter weiter. Eine Checkliste mit vier Zeilen schlägt eine Annahme ohne jede.