Der Schlüsselalgorithmus von Zertifikatanforderungen wird vom Policy Modul der Zertifizierungsstelle nicht überprüft

Folgendes Szenario angenommen:

  • Es ist eine Zertifikatvorlage für die Verwendung von auf elliptischen Kurven basierenden Schlüsseln konfiguriert (z.B. ECDSA_P256).
  • Als Folge dessen ist eine Mindest-Schlüssellänge von 256 Bit konfiguriert.
  • Es werden dennoch auch Zertifikatanforderungen, die andere ECC-Kurven oder RSA-basierte Schlüssel verwenden, signiert.

Eine Möglichkeit, den Schlüsselalgorithmus bei der Zertifikatausstellung zu identifizieren und dessen korrekte Verwendung zu erzwingen ist mit dem TameMyCerts Policy Modul für Microsoft Active Directory Certificate Services gegeben.

Wie man sieht, ist der "Algorithm Name" auf ECDSA_P256 eingestellt, man sollte also erwarten, dass nur Zertifikatanforderungen akzeptiert werden, die exakt diesen Schlüsselalgorithmus verwenden.

Überprüfung des Verhaltens

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 und steht unter einer freien Lizenz. Es kann über GitHub heruntergeladen und kostenlos verwendet werden.

Um das Verhalten schnell und übersichtlich zu testen, bietet sich das PSCertificateEnrollment PowerShell Modul an.

Install-Module PSCertificateEnrollment
Import-Module PSCertificateEnrollment

Mit nachfolgendem Befehl werden insgesamt sieben Zertifikatanforderungen erstellt und unter Verwendung der Zertifikatvorlage "ADCS Labor WebServer ECC" an die Zertifizierungsstelle gesendet.

Sie verwenden folgende Parameter:

  • Schlüsselalgorithmus ECDSA_P256
  • Schlüsselalgorithmus ECDSA_P384
  • Schlüsselalgorithmus ECDSA_P521
  • Schlüsselalgorithmus ECDH_P256
  • Schlüsselalgorithmus ECDH_P384
  • Schlüsselalgorithmus ECDH_P521
  • Schlüsselalgorithmus RSA (mit Schlüsselgröße 2048 Bit)
(
"ECDSA_P256",
"ECDSA_P384",
"ECDSA_P521",
"ECDH_P256",
"ECDH_P384",
"ECDH_P521",
"RSA"
) | ForEach-Object -Process { 
 New-CertificateRequest -Subject "CN=test" -KeyAlgorithm $_ | 
  Get-IssuedCertificate `
   -ConfigString "ca02.intra.adcslabor.de\ADCS Labor Issuing CA 1" `
   -CertificateTemplate "ADCSLaborWebServerECC" | 
    Select-Object -Property Result
}

Wie man sieht, werden alle Zertifikatanforderungen klaglos von der Zertifizierungsstelle ausgestellt. Eine Prüfung des verwendeten Schlüsselalgorithmus durch das Policy-Modul der Zertifizierungsstelle findet also nicht statt.

Der Schlüsselalgorithmus ist also eher (analog zur Exportierbarkeit des privaten Schlüssels) als Voreinstellung für Zertifikatbeantragungen über die Microsoft Management Console (MMC) oder AutoEnrollment von Clients in einer Active Directory Gesamtstruktur zu verstehen. Die Voreinstellung kommt jedoch bei manuell erzeugten Zertifikatanforderungen, wie sie beispielsweise im Webserver-Fall gängig sind, nicht zur Geltung.

Fazit

Ein positiver Aspekt dieses Verhaltens ist, dass man (im Fall abseits von AutoEnrollment gestellter Zertifikatanforderungen) für die Ausstellung von Zertifikaten, die sowohl RSA- als auch ECC-Schlüssel verwenden können, unter Umständen nur eine einzige Zertifikatvorlage benötigt. Es reicht dann, die Schlüsselgröße zu reduzieren.

Dies ist allerdings nur möglich, wenn alle verwendeten Schlüsselalgorithmen die gleichen Fähigkeiten in Hinsicht auf Signatur und Verschlüsselung haben wie der in der Zertifikatvorlage konfgurierte (ECDSA beispielsweise kann nur zum Signieren verwendet werden). Die Key Usage Erweiterung der ausgestellten Zertifikate passt sich an die Fähigkeiten des konfigurierten Key Storage Provider an.

Auf der anderen Seite bedeutet dies allerdings auch, dass es zu unerwünschten Fehl-Ausstellungen kommen kann, beispielsweise, wenn Zertifikatanforderungen mit zu geringen RSA-Schlüsselgrößen signiert werden oder die falschen Schlüsselalgorithmen beantragt werden (beispielsweise ECDH Schlüssel für Signaturzertifikate).

Dies kann insbesondere dann auftreten, wenn Zertifikatanträge über die Microsoft Management Console (MMS) gestellt werden, da hier die Standardeinstellungen gewählt werden.

Eine entsprechende Prüfung muss also vorgelagert stattfinden. Es ist außerdem sinnvoll, die Standardeinstellung für den Schlüssel-Algorithmus auf einen auf elliptischen Kurven basierten Algorithmus zu konfigurieren, damit nicht versehentlich RSA-Schlüssel mit zu kurzen Schlüssellänmgen signiert werden.

2 Gedanken zu „Der Schlüsselalgorithmus von Zertifikatanforderungen wird vom Policy Modul der Zertifizierungsstelle nicht überprüft“

Kommentare sind geschlossen.

de_DEDeutsch