Wie geht OCSP mit gelöschten Zertifikaten um?

Wie geht OCSP mit gelöschten Zertifikaten um?

Wir haben eine Microsoft-Zertifizierungsstelle, die unter Windows Server 2019 ausgeführt wird. Wir stellen über ein MDM Zertifikate für Android-Geräte aus. Die Benutzer des Android-Geräts navigieren zu einer Webanwendung (gehostet von Apache, implementiert in PHP 8) mit dem Chrome-Webbrowser (unter Android), der ein Client-Zertifikat erfordert.

Wir installieren eine separate Windows Server 2019-Instanz mit der Microsoft OCSP Responder-Rolle, um zu validieren/überprüfen, ob die dem Apache-Webserver vorgelegten Client-Zertifikate gültig sind. Apache verfügt über mehrere Anweisungen zur Handhabung der OCSP-Validierung. Zur weiteren Sicherheit möchten wir die Zertifikate auch in PHP validieren.

Aus meiner Recherche beim Lesen mehrerer RFCs und technischer Dokumente von Microsoft geht hervor, dass der Microsoft OCSP Responder Zertifikate durch Vergleich mit einer CRL auf ihren Widerrufsstatus validiert.

Wie überprüft der Microsoft OCSP Responder Zertifikate, wenn sie von der Zertifizierungsstelle gelöscht und nicht widerrufen wurden? Wenn sie gelöscht und nicht widerrufen wurden, erscheinen sie nicht in der Zertifikatsperrliste.

Übersehe ich hier etwas? Überprüft der Microsoft OCSP Responder die Seriennummer anhand der CA-Datenbank sowie ihren Widerrufsstatus?

Antwort1

Validiert der Microsoft OCSP Responder die Seriennummer anhand der CA-Datenbank sowie ihren Widerrufsstatus?

Standardmäßig meldet Microsoft OCSP eine solche Seriennummer als „Gut“. Ab Windows Server 2008 R2 wird Microsoft OCSP eine deterministische OCSP-Antwortfunktion hinzugefügt. Kurz gesagt, CA veröffentlicht alle Seriennummern aller jemals ausgestellten Zertifikate und OCSP ist so konfiguriert, dass es auch in diesem Verzeichnis nachsieht. Das neue Verhalten bewirkt Folgendes:

  • Wenn die Seriennummer im Ordner nicht vorhanden ist, antwortet OCSP mit UNKNOWNdem Status. Dies bedeutet, dass die angeforderte Seriennummer nie von CA ausgestellt wurde
  • Wenn eine Seriennummer im Ordner vorhanden ist, wird eine CRL geprüft
  • Wenn die Seriennummer in der CRL aufgeführt ist, antworten Sie mit REVOKEDdem Status, andernfalls mit GOOD.

Weitere Details in der Microsoft KB:Der Online-Responder-Dienst gibt für alle Zertifikate, die nicht in der CRL enthalten sind, kein deterministisches GOOD zurück.

Die KB enthält ein Skript, das alle Seriennummern ausgestellter Zertifikate in einen konfigurierten Ordner speichert. Das Skript ist jedoch etwas fehlerhaft. Es exportiert nur Seriennummern, die zum Zeitpunkt der Skriptausführung in der CA-Datenbank vorhanden sind. Die CA-Datenbank wird gewartet und alte Einträge werden gelöscht, um ein Überwachsen der CA-Datenbank zu verhindern. Dies führt zu einem falsch positiven UNKNOWNStatus bei gelöschten Zertifikaten, obwohl das Zertifikat ausgestellt wurde und irgendwo in freier Wildbahn existiert. Ich ziehe es vor, alles Ausgestellte unabhängig von der Wartung durch die CA beizubehalten und mit „zu antworten“, GOODauch wenn das Zertifikat aus der CA gelöscht wurde. Um diesen Fehler zu beheben, würde ich empfehlen, diese Zeilen aus dem Skript zu entfernen:

dir | foreach {
    remove-item $_ -force
}

Dadurch bleiben Seriennummern erhalten, die zwischen den Skriptausführungen auf CA nicht mehr vorhanden sind.

verwandte Informationen