Die Beantragung von Zertifikaten mit auf elliptischen Kurven basierenden Schlüsseln schlägt fehl, wenn der Microsoft Platform Crypto Provider verwendet wird

Folgendes Szenario angenommen:

Error: The requested operation is not supported. 0x80090029 (-2146893783 NTE_NOT_SUPPORTED)

Auf Windows Server 2016 wird die Fehlermeldung "No provider was specified for the store or object. 0x80092006 (-2146885626 CRYPT_E_NO_PROVIDER)" ausgegeben bei ansonsten identischem Verhalten.

Wird Autoenrollment verwendet, werden keine Ereignisse protokolliert. Bei manueller Zertifikatbeantragung protokolliert der Client die Ereignisse mit den Nummern 82 und anschließend mit Nummer 13 der Quelle Microsoft-Windows-CertificateServicesClient-CertEnroll.

Certificate enrollment for INTRA\administrator failed in authentication to all urls for enrollment server associated with policy id: {BA88EA53-D182-4A4E-9B1B-5A169EB3D93D} (The requested operation is not supported. 0x80090029 (-2146893783 NTE_NOT_SUPPORTED)). Failed to enroll for template: ADCSLaborBenutzerTPMECC
Certificate enrollment for INTRA\administrator failed to enroll for a ADCSLaborBenutzerTPMECC certificate with request ID N/A from CA02.intra.adcslabor.de\ADCS Labor Issuing CA 1 (The requested operation is not supported. 0x80090029 (-2146893783 NTE_NOT_SUPPORTED)).

Die manuelle Beantragung über die Kommandozeile teilt uns mit, dass keine Zertifkatanforderung gestellt werden kann. Um es präziser auszudrücken, offenbar kann das Schlüsselpaar nicht erstellt werden.

A certificate request could not be created.
The requested operation is not supported. 0x80090029 (-2146893783 NTE_NOT_SUPPORTED)

Ursache

Es handelt sich offenbar um einen Bug im Microsoft Platform Crypto Provider, der für die Erzeugung der Schlüssel mit TPM-Schutz zuständig ist. Wie sich zeigt, funktioniert die Zertifikatbeantragung mit Windows 10 21H2 und Windows 11 nämlich einwandfrei.

Folgende Windows-Versionen habe ich getestet:

Windows-VersionZustand
Windows 10 Enterprise 1909funktioniert nicht
Windows 10 Pro 21H1funktioniert nicht
Windows 10 Pro 21H2funktioniert
Windows 11 Pro (Release)funktioniert
Windows Server 2016 (Patch-Stand September 2022)funktioniert nicht
Windows Server 2019 (Release)funktioniert nicht
Windows Server 2019 (Patch-Stand August 2021)funktioniert
Windows Server 2022funktioniert

In einem Changelog zu einer Insider Preview Version für Windows 10 21H2 findet sich ein halbwegs passender Eintrag, der allerdings von zweifelhafter Aussagekraft ist (es wird von "dem" ECDSA Zertifikat gesprochen, die Fehlermeldung passt nicht mit unseren Beobachtungen überein und fälschlicherweise wird vom Microsoft Software Key Storage Provider gesprochen).

We fixed an issue that causes the enrollment of the Elliptic Curve Digital Signature Algorithm (ECDSA) certificate to fail with the error, “0x80090027 NTE_INVALID_PARAMETER”. This issue occurs when the Trusted Platform Module (TPM) provider (the Microsoft Software Key Storage Provider) stores the key.

Announcing Windows 10 Insider Preview Build 19044.1147 (21H2) (Microsoft)

Es wirkt ein wenig, als hätte der Verfasser selbst nicht ganz verstanden, worum es sich bei dem Problem dreht. Darum gehe ich davon aus, dass mit dem angesprochenen Fix (auch) das hier beschriebene Problem adressiert wurde, auch wenn die Beschreibung nicht exakt passt.

Die Lösung besteht also darin, Windows 10 21H2 oder Windows 11 für entsprechende Systeme zu verwenden.

Anmerkungen zur Konfiguration der Zertitfikatvorlage

Bei der Konfiguration der Zertifikatvorlage wird man vermutlich feststellen, dass man die Kombination aus elliptischen Kurven und dem Microsoft Platform Crypto Provider gar nicht einstellen kann.

Dies ist darin begründet, dass diese Kombination nur dann einstellbar ist, wenn auf dem Computer, auf dem die Verwaltungskonsole für Zertifikatvorlagen ausgeführt wird, auch ein entsprechend funktionierendes TPM verbaut ist.

Wenn also auf einem TPM 2.0 fähigen Computer die Remoteserver-Verwaltungstools (RSAT) installiert sind, kann der Platform Crypto Provider in Verbindung mit ECC Schlüsseln ausgewählt werden. Eine andere Möglichkeit ist, die Zertifikatvorlage direkt über LDAP zu konfigurieren.

Bitte außerdem beachten, dass erst Trusted Platform Module in Version 2.0 die Verwendung von auf elliptischen Kurven basierenden Schlüsseln überhaupt ermöglicht.

Der TPM 2.0 Standard schreibt hier allerdings nur 256 Bit Schlüsselgrößen verpflichtend vor.

The TPM should support ECC key sizes of at least 256 bits. Support for other key sizes is allowed.

TPM 2.0 Library specification (Trusted Computing Group)

Andere Schlüsselgrößen können (je nach Implementierung durch den TPM Hersteller), müssen aber nicht funktionieren. Versucht man, eine vom TPM nicht unterstützte Schlüsselgröße zu verwenden, schlägt auch hier die Erstellung der Zertifikatanforderung mit dem gleichen Fehlercode "NTE_NOT_SUPPORTED" fehl.

Damit bleibt ohne exakte Inventarisierung aller Geräte und deren TPM Chips nur diese Schlüsselgröße als kleinster gemeinsamer Nenner übrig. Aktuell (2021) bietet sie allerdings eine mehr als ausreichende Sicherheit.

Weiterführende Links

Externe Quellen