Grundlagen: Enroll on Behalf of (EOBO)

Nachfolgend eine Beschreibung der Enroll on Behalf Of Funktion sowie Abgrenzung zu anderen Methoden, Zertifikate zu beantragen.

„Grundlagen: Enroll on Behalf of (EOBO)“ weiterlesen

Die Beantragung eines Zertifikats über Enroll on Behalf of (EOBO) schlägt fehl mit der Fehlermeldung "The operation is denied. It can only be performed by a certificate manager that is allowed to manage certificates for the current requester."

  • Es wird für einen Benutzer ein Zertifikat von einer Zertifizierungsstelle über die Verwaltungskonsole für Zertifikate (certmgr.msc) beantragt.
  • Man verwendet hierbei den Enroll on Behalf of (EOBO) Mechanismus.
  • Die Beantragung des Zertifikats schlägt mit folgender Fehlermeldung fehl:
The operation is denied. It can only be performed by a certificate manager that is allowed to manage certificates for the current requester.
„Die Beantragung eines Zertifikats über Enroll on Behalf of (EOBO) schlägt fehl mit der Fehlermeldung "The operation is denied. It can only be performed by a certificate manager that is allowed to manage certificates for the current requester."“ weiterlesen

Die Beantragung eines Zertifikats über Enroll on Behalf of (EOBO) 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)"

  • Es wird für einen Benutzer ein Zertifikat von einer Zertifizierungsstelle über die Verwaltungskonsole für Zertifikate (certmgr.msc) beantragt.
  • Man verwendet hierbei den Enroll on Behalf of (EOBO) Mechanismus.
  • 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 Beantragung eines Zertifikats über Enroll on Behalf of (EOBO) 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)"“ weiterlesen

Die Beantragung eines Zertifikats über Enroll on Behalf of (EOBO) ist nicht möglich, da die Zertifikatvorlage nicht angezeigt wird. Die Fehlermeldung lautet "The certificate template requires too many RA signatures."

Folgendes Szenario angenommen:

  • Es wird für einen Benutzer oder einen Computer ein Zertifikat von einer Zertifizierungsstelle über die Verwaltungskonsole für Zertifikate (certlm.msc oder certmgr.msc) beantragt.
  • Man verwendet hierbei den Enroll on Behalf of (EOBO) Mechanismus.
  • Die gewünschte Zertifikatvorlage wird nicht angezeigt.
  • Aktiviert man das Kontrollkästchen "Show all templates", wird für die gewünschte Zertifikatvorlage folgende Fehlermeldung angezeigt:
The certificate template requires too many RA signatures. Only one RA signature is allowed. Multiple request agent signatures are not permitted on a certificate request.
„Die Beantragung eines Zertifikats über Enroll on Behalf of (EOBO) ist nicht möglich, da die Zertifikatvorlage nicht angezeigt wird. Die Fehlermeldung lautet "The certificate template requires too many RA signatures."“ weiterlesen

Grundlagen: Einschränkung der Pfadlänge (Path Length Constraint)

Der Ende 2008 vorgeführte Angriff auf den MD5 Signaturalgorithmus konnte nur deshalb zur Erstellung eines nutzbaren gefälschten Zertifizierungsstellen-Zertifikats verwendet werden, da die angegriffene Zertifizierungsstelle keine Einschränkung der Pfadlänge konfiguriert hatte.

Die Einschränkung der Pfadlänge ist im RFC 5280 beschrieben. Die Idee dahinter ist, dass in der "Basic Constraints" Erweiterung eines Zertifizierungsstellen-Zertifikats die maximale Tiefe der Zertifizierungsstellen-Hierarchie hinterlegt wird.

„Grundlagen: Einschränkung der Pfadlänge (Path Length Constraint)“ weiterlesen

Ein Exit Modul für die Zertifizierungsstelle in C# erstellen

Die Microsoft Zertifizierungsstelle bietet die Möglichkeit, eigene Policy- und Exitmodule zu entwickeln, um die Funktionalität der Zertifizierungsstelle zu erweitern.

Nachfolgend die notwendigen Schritte, um ein Exit Modul in C# mit Visual Studio 2019 zu erstellen. Das Exit Modul wird ausgestellte Zertifikate in ein konfigurierbares Verzeichnis im Dateisystem schreiben.

„Ein Exit Modul für die Zertifizierungsstelle in C# erstellen“ weiterlesen

Konfigurieren der Trusted Platform Module (TPM) Key Attestation

Seit Windows 8 ist es möglich, dass private Schlüssel für Zertifikate mit einem – sofern vorhanden – Trusted Platform Modul (TPM) geschützt werden. Dadurch ist eine Nichtexportierbarkeit des Schlüssels – auch mit Werkzeugen wie mimikatz – gegeben.

Auf den Ersten Blick ist allerdings nicht ersichtlich, dass nicht garantiert werden kann, dass auch wirklich ein TPM zum Einsatz kommt. Zwar wird keine Beantragung über die Microsoft Management Console oder AutoEnrollment möglich sein, wenn der Computer über kein TPM verfügt.

Es handelt sich jedoch bei der Konfiguration in der Zertifikatvorlage lediglich um eine Voreinstellung für den Client. Die Zertifizierungsstelle wird bei Beantragung nicht explizit prüfen, ob auch wirklich ein Trusted Platform Modul verwendet wurde.

Um sicherzustellen, dass der private Schlüssel einer Zertifikatanforderung wirklich mit einem Trusted Platform Modul geschützt wurde verbleibt also nur die TPM Key Attestation.

„Konfigurieren der Trusted Platform Module (TPM) Key Attestation“ weiterlesen

Manuelle Beantragung eines Webserver-Zertifikats

Es gibt Fälle, in welchen man Webserver-Zertifikate nicht über die Microsoft Management Console direkt von einer Zertifizierungsstelle in der eigenen Active Directory Gesamtstruktur beziehen kann oder möchte, beispielsweise wenn das betreffende System kein Domänenmitglied ist.

In diesem Fall ist die Verwendung von Zertifikatvorlagen nicht möglich, und man muss manuell einen Zertifikatantrag (Certificate Signing Request, CSR erstellen).

„Manuelle Beantragung eines Webserver-Zertifikats“ weiterlesen

Details zum Ereignis mit ID 4 der Quelle Microsoft-Windows-CertificateServicesClient-CertEnroll

Ereignisquelle:Microsoft-Windows-CertificateServicesClient-CertEnroll
Ereignis-ID:4 (0x425A0004)
Ereignisprotokoll:Application
Ereignistyp:Information
Ereignistext (englisch):Certificate enrollment for %1 could not access local resources or retrieve %2 certificate template information (%3). Enrollment was not performed.
Ereignistext (deutsch):Die Zertifikatregistrierung für %1 konnte nicht auf lokale Ressourcen zugreifen bzw Zertifikatvorlageninformationen für %2 abrufen (%3). Es wird keine Registrierung durchgeführt.
„Details zum Ereignis mit ID 4 der Quelle Microsoft-Windows-CertificateServicesClient-CertEnroll“ weiterlesen

Details zum Ereignis mit ID 13 der Quelle Microsoft-Windows-CertificateServicesClient-CertEnroll

Ereignisquelle:Microsoft-Windows-CertificateServicesClient-CertEnroll
Ereignis-ID:13 (0xC25A000D)
Ereignisprotokoll:Application
Ereignistyp:Error
Ereignistext (englisch):Certificate enrollment for %1 failed to enroll for a %2 certificate with request ID %4 from %3 (%5).
Ereignistext (deutsch):Die Zertifikatregistrierung für %1 konnte sich nicht für ein Zertifikat %2 mit der Anforderungs-ID %4 von %3 (%5) registrieren.
„Details zum Ereignis mit ID 13 der Quelle Microsoft-Windows-CertificateServicesClient-CertEnroll“ weiterlesen

Details zum Ereignis mit ID 57 der Quelle Microsoft-Windows-CertificateServicesClient-CertEnroll

Ereignisquelle:Microsoft-Windows-CertificateServicesClient-CertEnroll
Ereignis-ID:57 (0x825A0039)
Ereignisprotokoll:Application
Ereignistyp:Information, Warning und Error
Ereignistext (englisch):The "%2" provider was not loaded because initialization failed.
Ereignistext (deutsch):Der "%2"-Anbieter wurde aufgrund eines Initialisierungsfehlers nicht geladen.
„Details zum Ereignis mit ID 57 der Quelle Microsoft-Windows-CertificateServicesClient-CertEnroll“ weiterlesen

Details zum Ereignis mit ID 82 der Quelle Microsoft-Windows-CertificateServicesClient-CertEnroll

Ereignisquelle:Microsoft-Windows-CertificateServicesClient-CertEnroll
Ereignis-ID:82 (0x825A0052)
Ereignisprotokoll:Application
Ereignistyp:Warning
Ereignistext (englisch):Certificate enrollment for %1 failed in authentication to all urls for enrollment server associated with policy id: %2 (%4). Failed to enroll for template: %3
Ereignistext (deutsch):Fehler bei der Zertifikatregistrierung für %1 bei der Authentifizierung für alle URLs für den Registrierungsserver, der folgender Richtlinien-ID zugeordnet ist: %2 (%4). Fehler bei der Registrierung für Vorlage: %3
„Details zum Ereignis mit ID 82 der Quelle Microsoft-Windows-CertificateServicesClient-CertEnroll“ weiterlesen

Die Beantragung eines Zertifikats schlägt fehl mit Fehlermeldung "A certificate issued by the certification authority cannot be installed. Cannot find object or property. 0x80092004 (-2146885628 CRYPT_E_NOT_FOUND)"

Folgendes Szenario angenommen:

  • Es wird ein Zertifikat von einer Zertifizierungsstelle beantragt.
  • Das Zertifikat wird erfolgreich von der Zertifizierungsstelle ausgestellt.
  • Bei der Installation des Zertifikats auf dem Zielsystem kommt es jedoch zu folgender Fehlermeldung:
A certificate issued by the certification authority cannot be installed. Contact your administrator.
Cannot find object or property. 0x80092004 (-2146885628 CRYPT_E_NOT_FOUND)
„Die Beantragung eines Zertifikats schlägt fehl mit Fehlermeldung "A certificate issued by the certification authority cannot be installed. Cannot find object or property. 0x80092004 (-2146885628 CRYPT_E_NOT_FOUND)"“ weiterlesen

Beantragen eines durch ein Trusted Platform Modul (TPM) geschütztes Zertifikat – ohne ein TPM zu besitzen

Seit Windows 8 ist es möglich, dass private Schlüssel für Zertifikate mit einem – sofern vorhanden – Trusted Platform Modul (TPM) geschützt werden. Dadurch ist eine Nichtexportierbarkeit des Schlüssels – auch mit Werkzeugen wie mimikatz – gegeben.

Auf den Ersten Blick ist allerdings nicht ersichtlich, dass nicht garantiert werden kann, dass auch wirklich ein TPM zum Einsatz kommt. Zwar wird keine Beantragung über die Microsoft Management Console oder AutoEnrollment möglich sein, wenn der Computer über kein TPM verfügt.

Es handelt sich jedoch bei der Konfiguration in der Zertifikatvorlage lediglich um eine Voreinstellung für den Client. Die Zertifizierungsstelle wird bei Beantragung nicht explizit prüfen, ob auch wirklich ein Trusted Platform Modul verwendet wurde.

Somit können – wenn die Zertifikatbeantragung abseits der MMC erfolgt, beliebige Parameter für den privaten Schlüssel verwendet werden.

„Beantragen eines durch ein Trusted Platform Modul (TPM) geschütztes Zertifikat – ohne ein TPM zu besitzen“ weiterlesen

Die Beantragung eines Zertifikats ist nicht möglich, da die Zertifikatvorlage nicht angezeigt wird. Die Fehlermeldung lautet "Can not find a valid CSP in the local machine."

Folgendes Szenario angenommen:

  • Es wird für einen Benutzer oder einen Computer ein Zertifikat von einer Zertifizierungsstelle über die Verwaltungskonsole für Zertifikate (certlm.msc oder certmgr.msc) beantragt.
  • Autoenrollment beantragt kein Zertifikat von der gewünschten Zertifikatvorlage, obwohl es aktiviert ist und die Berechtigungen entsprechend gesetzt sind.
  • Die gewünschte Zertifikatvorlage wird bei manueller Beantragung über die Microsoft Management Konsole (MMC) nicht angezeigt. Aktiviert man das Kontrollkästchen "Show all templates", wird für die gewünschte Zertifikatvorlage folgende Fehlermeldung angezeigt:
Cannot find object or property.
Can not find a valid CSP in the local machine.
„Die Beantragung eines Zertifikats ist nicht möglich, da die Zertifikatvorlage nicht angezeigt wird. Die Fehlermeldung lautet "Can not find a valid CSP in the local machine."“ weiterlesen