Die Beantragung eines Zertifikats schlägt fehl mit der Fehlermeldung "A certification chain processed correctly, but one of the CA certificates is not trusted by the policy provider. 0x800b0112 (-2146762478 CERT_E_UNTRUSTEDCA)"

Folgendes Szenario:

  • Ein Benutzer bentragt ein Zertifikat von einer Active Directory integrierten Zertifizierungsstelle (Enterprise Certification Authority).
  • Dem Zertifikat der Zertifizierungsstelle wird vertraut, d.h. sie befindet sich im Speicher für vertrauenswürdige Stammzertifizierungsstellen (Trusted Root Certification Authorities).
  • Die Beantragung des Zertifikats schlägt mit folgender Fehlermeldung fehl:
A certification chain processed correctly, but one of the CA certificates is not trusted by the policy provider. 0x800b0112 (-2146762478 CERT_E_UNTRUSTEDCA)

Die Zertifizierungsstelle wird das Ereignis mit Nr. 22 protokollieren.

Ursache

Im Vorliegenden Fall wurde eine Archivierung von privaten Schlüsseln versucht. Hierfür wurde auf der Zertifizierungsstelle ein Schlüsselwiederherstellungsagent (Key Recovery Agent, KRA) konfiguriert. Die Zertifizierungsstelle, welche das Zertifikat des Schlüsselwiederherstellungsagenten ausgestellt hat, wurde jedoch aus dem NTAuthCertificates Objekt entfernt.

Das NTAuthCertificates Objekt befindet sich unterhalb des Public Key Services Containers innerhalb der Konfigurationspartition der Active Directory Gesamtstruktur. In ihm sind alle Zertifizierungsstellen-Zertifikate hinterlegt, welche für eine Zertifikatbasierte Anmeldung im Windows Ökosystem verwendet werden können.

Der vollständige LDAP-Pfad lautet:

CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,{Forest-Root-Domain}

Folgende auf Zertifikaten aufbauende Funktionen erfordern das Vorhandensein des CA-Zertifikats in NTAuthCertificates Objekt:

FunktionBeschreibung
Enroll on Behalf Of (EOBO)Das CA-Zertifikat der Zertifizierungsstelle , welche die Zertifikate für die Enrollment Agenten ausstellt, muss sich in NTAuthCertificates befinden.
Key Recovery / Private Key ArchivierungDas CA-Zertifikat der Zertifizierungsstelle, welche die Schlüssel archiviert, muss sich in NTAuthCertificates befinden.
Smartcard LogonDas CA-Zertifikat der Zertifizierungsstelle, welche die Zertifikate der Domänencontroller und der anmeldenden Benutzer ausstellt, muss sich in NTAuthCertificates befinden.
Windows Hello for BusinessIdentisch zu Smartcard Logon. Wenn Windows Hello for Business ohne Zertifikate wird, muss nur die Zertifizierungsstelle für Domänencontroller eingetragen sein.
Netzwerkrichtlinienserver (Network Policy Server, NPS), wenn Zertifikatbasierte Anmeldungen verarbeitet werden (z.B. 802.1x über drahtloses oder verkabeltes Netzwerk, DirectAccess, Always ON VPN)Das CA-Zertifikat der Zertifizierungsstelle, welche die Zertifikate der anmeldenden Benutzer oder Computer ausstellt, muss sich in NTAuthCertificates befinden.
EFS Dateiwiederherstellungs-AgentenDas CA-Zertifikat der Zertifizierungsstelle, welche die Zertifikate der Dateiwiederherstellungs-Agenten ausstellt, muss sich in NTAuthCertificates befinden.
IIS Client Certificate Mapping (gegen Active Directory)Das CA-Zertifikat der Zertifizierungsstelle, welche die Zertifikate der anmeldenden Benutzer ausstellt, muss sich in NTAuthCertificates befinden.
Registrierungsdienst für Netzwerkgeräte (Network Device Enrollment Service, NDES), nur Renewal-ModusBetrifft nur den Renewal-Modus, also das signieren einer Zertifikatanforderung mit einem bestehenden Zertifikat.
Das CA-Zertifikat der Zertifizierungsstelle, welche die Zertifikate der zu erneuernden Zertifikate ausgestellt hat, muss sich in NTAuthCertificates befinden.

Wird eine Active Directory integrierte Zertifizierungsstelle (Enterprise CA) neu installiert, wird ihr CA-Zertifikat automatisch von der Installationsroutine in das NTAuthCertificates Objekt kopiert. Im vorliegenden Fall wurde das CA-Zertifikat nachträglich aus dem Objekt entfernt.

Das Objekt kann beispielsweise mit dem ADSI Editor (adsiedit.msc) inspiziert werden, jedoch können hier die CA-Zertifikate nicht direkt eingesehen werden, da sie als Byte-Array abgespeichert sind.

Man kann jedoch beispielsweise mit folgendem Kommandozeilen-Befehl überprüfen, welche Zertifikate sich in NTAuthCertificates befinden:

certutil -enterprise -verifystore NTAuth 

Im obigen Bild sieht man, dass auch hier eine CERT_E_UNTRUSTEDCA Meldung erscheint, obwohl ein Zertifizierungsstellen-Zertifikat vorhanden ist. Dies scheint normal, hier sollte man sich nicht von der Meldung irritieren lassen.

Ebenso ist eine Überprüfung mit der Enterprise PKI Management Konsole (pkiview.msc) möglich, welche zusammen mit den Zertifizierungsstellen-Management-Tools installiert ist. Innerhalb der Baumansicht auf der linken Seite klickt man rechts auf den obersten Knoten und wählt Manage AD Containers…

Anschließend ist die Liste der Zertifikate im Kartreiter NTAuthCertificates zu finden.

Sollte sich also herausstellen, dass das Zertifizierungsstellen-Zertifikat nicht hier enthalten ist, kann man es im gleichen Dialog hinzufühen.

Ebenso ist es möglich, ein Zertifizierungsstellen-Zertifikat mit folgendem Kommandozeilenbefehl hinzuzufügen.

certutil -dspublish {Dateiname} NTAuthCA

Aus Sicherheitsgründen kann es durchaus empfehlenswert sein, dass sich ein Zertifizierungsstellen-Zertifikat nicht im NTAuthCertificates Objekt befindet. Hinzugefügte CA-Zertifikate werden von allen zuvor aufgelisteten Funktionen als vertrauenswürdig angesehen. Dies kann ein Sicherheitsrisiko bedeutet, angenommen, die Zertifizierungsstelle wird von einem Angreifer übernommen. Bevor man neue CA-Zertifikats in das NTAuthCertificates Objekt aufnimmt, sollte eine Sicherheitsbewertung stattfinden. Üblicherweise hat es einen Grund, dass das CA-Zertifikat auf NTAuthCertificates entfernt wurde.

Weiterführende Links:

3 Gedanken zu „Die Beantragung eines Zertifikats schlägt fehl mit der Fehlermeldung "A certification chain processed correctly, but one of the CA certificates is not trusted by the policy provider. 0x800b0112 (-2146762478 CERT_E_UNTRUSTEDCA)"“

Kommentare sind geschlossen.

de_DEDeutsch