Deterministisches "Good" für den Onlineresponder (OCSP) konfigurieren

In der Standard-Konfiguration liefert der Onlineresponder für angefragte Zertifikate, die nicht auf einer der konfigurierten Sperrlisten auftauchen, den Status "Good" zurück.

Dies kann problematisch sein, da der Onlineresponder keine Kenntnis über von den Zertifizierungsstellen ausgestellte Zertifikate besitzt. Gelingt es einem Angreifer, mittels des privaten Schlüssels der Zertifizierungsstelle ein Zertifikat ohne deren Kenntnis auszustellen, würde dies nicht vom Onlineresponder erkannt werden, und würde auch im Auditprotokoll als "Good" auftauchen.

Der Online Responder (Online Certificate Status Protocol, OCSP) ist eine alternative Möglichkeit, Sperrstatusinformationen für Zertifikate bereitzustellen. Entitäten, die den Sperrstatus eines Zertifikats überprüfen möchten, müssen dank OCSP nicht die komplette Liste aller widerrufenen Zertifikate herunterladen, sondern können gezielt eine Anfrage für das betreffende Zertifikat an den Online Responder stellen. Für eine detailliertere Beschreibung siehe Artikel "Grundlagen Online Responder (Online Certificate Status Protocol, OCSP)".

Siehe hierzu auch RFC 6960:

The "good" state indicates a positive response to the status inquiry. At a minimum, this positive response indicates that no certificate with the requested certificate serial number currently within its validity interval is revoked. This state does not necessarily mean that the certificate was ever issued or that the time at which the response was produced is within the certificate’s validity interval.

Funktionsweise

Nachfolgend werden die folgenden Schritte durchgeführt:

  • Seriennummern der von den Zertifizierungsstellen ausgestellten Zertifikate exportieren.
  • Den Onlineresponder konfigurieren, die exportierten Seriennummern für die Überprüfung des Zertifikatstatus zu verwenden.

Die Seriennummern der ausgestellten Zertifikate der betreffenden Zertifizierungsstellen werden als leere Textdateien exportiert. Der Dateiname entspricht hierbei der Seriennummer des Zertifikats.

Diese Dateien müssen dem Onlineresponder zur Verfügung gestellt werden. Nachdem er konfiguriert wurde, in dem konfigurierten Verzeichnis nach den Seriennummern zu suchen, wird er für jedes angefragte Zertifikat prüfen, ob eine der Seriennummer entsprechende Datei gefunden werden kann.

Nachdem die Konfiguration erfolgt ist, wird sich der Onlineresponder wie folgt verhalten:

  • Für Zertifikate, deren Seriennummern in einem der konfigurierten Verzeichnisse gefunden werden, wird der Status "Good" zurückgegeben.
  • Für Zertifikate, deren Seriennummern in einer der konfigurierten Sperrlisten auftauchen, wird der Status "Revoked" zurückgegeben.
  • Für Zertifikate, auf welche die beiden vorigen Kriterien nicht zutreffen, wird der Status "Unknown" zurückgegeben.

Zuverlässigkeit der Lösung

Die Verwendung des Onlineresponders durch alle Teilnehmer ist nicht garantiert. Beispielsweise kann es in den folgenden Fällen passieren, dass der Onlineresponder nicht verwendet wird:

  • Die prüfende Anwendung verwendet OCSP nicht.
  • Das zu überprüfende Zertifikat hat keinen OCSP-Pfad in der Authority Information Access (AIA) Erweiterung eingetragen. Da diese von einem Angreifer unter Umständen bestimmt werden kann, ist dies problematisch, wenn CDP zur Verfügung gestellt werden.
  • Die OCSP Magic Number greift, wenn CDP im Zertifikat konfiguriert sind (beispielsweise bei Domänencontrollern, die Smartcard-Anmeldungen überprüfen). In diesem Fall wird die Anwendung bevorzugt die Sperrliste verwenden, da sie der Meinung ist, dies wäre effizienter.

Dass OCSP in allen Fällen verwendet wird, kann nur sichergestellt werden, wenn die ausgestellten Zertifikate keinen CDP enthalten und die Sperrlisten nirgends zugänglich sind.

Alternativ gibt es auch die Möglichkeit, einzelne Computer per Gruppenrichtlinie für bestimmte Zertifizierungsstellen anzuweisen, ausschließlich die Onlineresponder zu verwenden.

Einrichtung

Hotfix installieren

Für Windows Server 2012 R2 muss der Hotfix KB2967917 installiert werden. Windows Server 2016 und neuer beinhalten den Hotfix bereits.

Seriennummern der von den Zertifizierungsstellen ausgestellten Zertifikate exportieren

Anbei das Beispielscript aus dem zuvorgenannten Knowledge Base Artikel.

param(
    [ValidateScript({Test-Path $_})]
    [String] $Path
)
pushd $Path
dir | foreach {
    remove-item $_ -force
}
certutil.exe -out serialnumber -restrict "Disposition = 20" -view | foreach {
    if ($_ -match 'Serial Number: "([^"]+)"') {
        New-Item -type File $matches[1] | out-null
    }
}
popd

Das Script muss regelmäßig ausgeführt werden, um die Informationen über ausgestellte Zertifikate synchron zu halten.

Alternativ ist es möglich und auch eleganter, hierfür ein Exitmodul zu schreiben, welches die Seriennummern direkt bei Ausstellung eines Zertifikats ins Dateisyste, speichert. Siehe Artikel "Ein Exit Modul für die Zertifizierungsstelle in C# erstellen".

Den Onlineresponder konfigurieren, die exportierten Seriennummern für die Überprüfung des Zertifikatstatus zu verwenden

Damit der Onlineresponder die exportierten Seriennummern überprüfen kann, muss die jeweilige Sperrkonfiguration hierfür konfiguriert werden. Hierfür ist keine graphische Oberfläche und auch kein Kommandozeilenbefehl vorhanden. Stattdessen muss der Pfad direkt über einen Registrierungsschlüssel angegeben werden.

Hierzu navigiert man mit dem Registrierungs-Editor in folgendes Verzeichnis:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OcspSvc\Responder\<Name-der-Sperrkonfiguration>\Provider

Dort wird ein neuer Multi-String Wert erzeugt.

Diesem wird der Name "IssuedSerialNumbersDirectories" zugewiesen.

Als Inhalt wird der konfigurierte Pfad, welcher die Seriennummern enthält, konfiguriert.

Anwenden der Änderungen

Nachdem die Konfiguration abgeschlossen ist, muss den Onlineresponder-Dienst anschließend neu gestartet werden.

Restart-Service OCSPSvc

Ergebniskontrolle

Wenn die Auditierung der OCSP-Ereignisse aktiviert ist und ein Zertifikat mit einer unbekannten Seriennummer zur Prüfung angefragt wird, meldet der Onlineresponder nun einen Status von "Unknown" zurück (einzusehen im Ereignis Nr. 5125).

Zum Vergleich: Ist kein deterministisches Good konfiguriert, bewirkt das gleiche Zertifikat einen Status von "Good".

Weiterführende Links:

Externe Quellen