Die Beantragung von Zertifikaten über den Registrierungsdienst für Netzwerkgeräte (NDES) schlägt mit HTTP Fehlercode 500 fehl

Folgendes Szenario angenommen:

  • Es ist ein Registrierungsdienst für Netzwerkgeräte (Network Device Enrollment Service, NDES) im Netzwerk implementiert.
  • Der NDES Server verwendet ein Domänenkonto für die Identität des SCEP IIS-Anwendungspools.
  • Die Beantragung von Zertifikaten über NDES schlägt mit HTTP Fehlercode 500 (Internal Server Error) fehl.
  • Der Aufruf der mscep- und mscep_admin Seiten schlägt ebenfalls mit dem HTTP Fehlercode 500 fehl.
  • Auch nach einem iisreset bzw. Neustart des NDES Servers erscheint nach Aufruf der mscep oder mscsp_admin Seite kein Ereignis, dass der NDES Dienst gestartet wäre, oder dass es Fehler gegeben hätte.

Der Registrierungsdienst für Netzwerkgeräte (Network Device Enrollment Service, NDES) bietet eine Möglichkeit, Geräten, welche nicht über eine Kennung im Active Directory verfügen (beispielsweise Netzwerkgeräte wie Router, Switches, Drucker, Thin Clients oder Smartphones und Tablets), Zertifikate von einer Zertifizierungsstelle zu beantragen. Für eine detailliertere Beschreibung siehe Artikel "Grundlagen Registrierungsdienst für Netzwerkgeräte (Network Device Enrollment Service, NDES)".

Ausführliche Fehlerbeschreibung

Ruft man die mscep-Seite direkt auf dem NDES-Server auf, erhält man mehr Details. Man sieht den Fehlercode

Fehlercode 0x80070542 (ERROR_BAD_IMPERSONATION_LEVEL)

Der Fehlercode 0x80070542 bedeutet:

0x80070542 (WIN32: 1346 ERROR_BAD_IMPERSONATION_LEVEL) -- 2147943746 (-2147023550)
Either a required impersonation level was not provided, or the provided impersonation level is invalid.

Beobachtet man den IIS-Prozess (w3wp.exe) mit dem Process Monitor, wird hier ebenfalls eine BAD IMPERSONATION gemeldet.

Der Aufruf von mscep_admin funktioniert, jedoch nur, wenn man sich mit dem NDES-Dienstkonto anmeldet.

Meldet man sich an der mscep_admin Seite als NDES-Dienstkonto an, bewirkt dies den Dienststart, jedoch schlägt eine Beantragung eines Zertifikats weiterhin mit HTTP Fehlermeldung 500 fehl.

Eine Beantragung eines Zertifikats mit dem NDES-Dienstkonto erzeugt den Fehlercode 0x8007025c (ERROR_INVALID_VARIANT).

In diesem Fall werden auch zwei Ereignisse von NDES-Dienst (Ereignisse Nr. 14 und 18) protokolliert:

The Network Device Enrollment Service cannot sign the response to a client request (0x80070005).
The Network Device Enrollment Service cannot decrypt the client's PKCS7 message (0x80070005).

Der Fehlercode 0x80070005 bedeutet E_ACCESSDENIED (General access denied error.). Diesen findet man auch im Process Monitor wieder. Das NDES-Dienstkonto besitzt jedoch die benötigten Leseberechtigungen auf die aufgelisteten Registrierungsschlüssel.

Nimmt man das NDES-Dienstkonto vorübergehend in die Gruppe der lokalen Administratoren auf, funktioniert der Dienst wie vorgesehen.

Lösung

Im vorliegenden Fall wurden Härtungseinstellungen über Gruppenrichtlinien an alle Server – somit auch an den NDES-Server verteilt. Hierdurch wurde dem NDES-Dienstkonto das Recht "Impersonate a Client after Authentication" (SeImpersonatePrivilege) genommen. Nach einem Neustart des Servers, des Webserver-Dienstes oder des SCEP-Anwendungspools verfügt das NDES-Dienstkonto also nicht mehr über dieses Recht.

Es wird jedoch vom NDES-Dienstkonto benötigt. In der Standardeinstellung erhält es dieses Recht über die Mitgliedschaft in der Gruppe IIS_IUSRS. Es muss also entsprechend wieder vergeben werden.

Anschließend muss mit einem iisreset Befehl der NDES-Dienst neu gestartet werden, damit die Berechtigungen korrekt angewendet werden.

Fehlercode 0x80070057 (ERROR_INVALID_PARAMETER)

Siehe Artikel "Der Registrierungsdienst für Netzwerkgeräte (NDES) protokolliert die Fehlermeldung "The Network Device Enrollment Service cannot retrieve one of its required certificates (0x80070057). The parameter is incorrect."".

Weiterführende Links:

de_DEDeutsch