Grundlagen: Auffinden von Zertifikaten und Validierung des Zertifizierungspfades

Um feststellen zu können, ob ein Zertifikat von einer als vertrauenswürdig eingestuften Zertifizierungsstelle ausgestellt wurde, muss eine Vertrauenskette (engl. Trust Chain) gebildet werden. Hierfür müssen alle Zertifikate in der Kette ermittelt und überprüft werden. Die Microsoft CryptoAPI bildet alle möglichen Zertifikatketten und liefert diejenigen mit der höchsten Qualität an die anfragende Anwendung zurück.

Zur besseren Verdeutlichung der Funktionsweise wird im nachfolgenden Beispiel der Prozess des Auffindens von Zertifikaten anhand einer dreistufigen PKI-Hierarchie erläutert.

  1. Für das zu überprüfende Endentitätszertifikat wird aus dem Stelleninformationszugriff-Feld (engl. Authority Information Access, AIA) der Downloadpfad für das CA-Zertifikat der ausstellenden Zertifizierungsstelle (der Issuing CA) ermittelt. Dieses wird anschließend heruntergeladen und lokal abgespeichert.
  2. Es wird nun ist eine Zuordnung des Endentitätszertifikats zum CA-Zertifikat der Issuing CA vorgenommen (siehe nachfolgender Absatz), welches nun als nächstes überprüft werden muss.
  3. Für das zu überprüfende Zertifikat der Issuing CA wird aus dessen AIA-Feld der Downloadpfad für das Zertifikat der ausstellenden Zertifizierungsstelle (der Policy CA) ermittelt. Dieses wird anschließend heruntergeladen und lokal abgespeichert.
  4. Es wird nun ist eine Zuordnung des CA-Zertifikats der Issuing CA zum CA-Zertifikat der Policy CA vorgenommen, welches nun als nächstes überprüft werden muss.
  5. Für das zu überprüfende CA-Zertifikat der Policy CA wird die ausstellende Zertifizierungsstelle (die Root CA) ermittelt. Dieses Zertifikat muss sich in der lokalen Liste vertrauenswürdiger Stammzertifizierungsstellen befinden, um als gültig erkannt zu werden. Auch wenn das AIA-Feld des Zertifikats der Issuing CA auf die Root CA verweist, und der Client somit theoretisch die Möglichkeit hätte, es herunterzuladen und abzuspeichern, würde ein Client das Zertifikat dennoch als nicht vertrauenswürdig betrachten, wenn das Stammzertifizierungsstellenzertifikat nicht bereits vorher durch einen Systemadministrator im lokalen Speicher hinterlegt wurde. Ohne dieses Verhalten wäre keine Kontrolle darüber möglich, welchen CA-Zertfikaten vertraut werden soll, und welche nicht.

Kennen Sie TameMyCerts? TameMyCerts ist ein Add-On für die Microsoft Zertifizierungsstelle (Active Directory Certificate Services). Es erweitert die Funktion der Zertifizierungsstelle und ermöglicht die Anwendung von Regelwerken, um die sichere Automatisierung von Zertifikat-Ausstellungen zu realisieren. TameMyCerts ist einzigartig im Microsoft-Ökosystem, hat sich bereits in unzähligen Unternehmen auf der ganzen Welt bewährt und steht unter einer freien Lizenz. Es kann über GitHub heruntergeladen und kostenlos verwendet werden. Professionelle Wartung wird ebenfalls angeboten.

Die Zuordnung eines Zertifikats zu dessen Zertifizierungsstelle erfolgt durch den Abgleich bestimmter Attribute innerhalb beider Zertifikate. Hierbei gibt es drei Möglichkeiten, je nachdem, welche Attribute in den Zertifikaten enthalten sind:

  1. Exact Match. Enthält das Endentitätszertifikat ein Authority Key Identifier (AKI) Attribut, welches sowohl ein Antragsteller (engl. Subject) als auch einen Schlüssel-Identifizierer beinhaltet, werden diese beiden Felder mit denen im Subject Key Identifier (SKI) der ausstellenden Zertifizierungsstelle verglichen.
  2. Key Match. Enthält das Endentitätszertifikat ein AKI-Attribut, welches nur den Schlüssel-Identifizierer des öffentlichen Schlüssels der ausstellenden Zertifizierungsstelle beinhaltet, wird dieser mit dem im Subject Key Identifier (SKI) der ausstellenden Zertifizierungsstelle enthaltenen Schlüssel-Identifizierer verglichen.
  3. Name Match. Ist das AKI-Feld entweder leer oder gar nicht vorhanden, wird das Issuer-Feld des Zertifikats mit dem Subject-Feld der ausstellenden Zertifizierungsstelle verglichen. Der Vergleich von Subject DN und Issuer DN erfolgt nicht als Zeichenketten-Vergleich, sondern als binärer Vergleich.

Weiterführende Links:

de_DEDeutsch