Freigeben über


Erweiterungsfunktionen

Das X.509 Version 3-Zertifikatformat identifiziert mehrere Erweiterungen, die einem Zertifikat hinzugefügt werden können, um erweiterte Informationen zur Schlüsselverwendung, Zertifikatrichtlinien und -einschränkungen, alternativen Namensformularen und mehr bereitzustellen.

CertEnroll.dll implementiert die folgenden Schnittstellen zum Verwalten von Zertifikaterweiterungen:

In jedem der folgenden Abschnitte wird eine Funktion erläutert, die von Xenroll.dll exportiert wird, um Zertifikaterweiterungen zu verwalten. In jedem Abschnitt wird auch erläutert, wie Sie CertEnroll.dll verwenden, um die Funktion zu ersetzen, oder gibt an, dass keine Zuordnung zwischen den beiden Bibliotheken vorhanden ist:

AddCertTypeToRequestWStr

Die AddCertTypeToRequestWStr-Funktion in Xenroll.dll fügt einer Anforderung eine Zertifikatvorlage nach Name hinzu.

Bei Verwendung von CertEnroll.dll ist die bevorzugte Methode zum Integrieren einer Vorlage in eine Zertifikatanforderung die InitializeFromTemplateName-Methode für ein PKCS#10- oder [*PKCS )-Anforderungsobjekt oder die InitializeFromInnerRequestTemplateName-Methode für eine CMC-Anforderung.

Wenn eine bestimmte Vorlage auf dem Client nicht verfügbar ist, aber von der Zertifizierungsstelle verstanden werden soll, können Sie die IX509ExtensionTemplateName-Schnittstelle verwenden, um eine Vorlage der Version 1 hinzuzufügen, oder Sie können die IX509ExtensionTemplate-Schnittstelle verwenden, um einer Zertifikatanforderung eine Vorlage der Version 2 hinzuzufügen. Führen Sie beispielsweise die folgenden Aktionen aus, um eine Vorlage der Version 1 hinzuzufügen:

  1. Erstellen Sie ein IX509Extensions-Objekt .
  2. Erstellen Sie ein IX509ExtensionTemplateName-Objekt , und rufen Sie die InitializeEncode-Methode auf, indem Sie den Vorlagennamen angeben.
  3. Fügen Sie die erstellte Erweiterung der IX509Extensions-Auflistung hinzu, indem Sie die Add-Methode aufrufen.
  4. Erstellen Sie ein IX509AttributeExtensions-Objekt , und rufen Sie die InitializeEncode-Methode auf, und geben Sie die IX509Extensions-Auflistung für die Eingabe an.
  5. Rufen Sie ein ICryptAttributes-Auflistungsobjekt ab, indem Sie die CryptAttributes-Eigenschaft für ein vorhandenes IX509CertificateRequestPkcs10 - oder IX509CertificateRequestCmc-Anforderungsobjekt aufrufen.

AddCertTypeToRequestWStrEx

Die Funktion AddCertTypeToRequestWStrEx in Xenroll.dll fügt einer Anforderung eine Zertifikatvorlage nach Name, Objektbezeichner und Version hinzu.

Informationen zur Verwendung von CertEnroll.dll zum Integrieren von Vorlageninformationen in eine Anforderung finden Sie unter AddCertTypeToRequestWStr.

AddExtensionsToRequest

Die AddExtensionsToRequest-Funktion in Xenroll.dll fügt einer Anforderung eine Auflistung von Erweiterungen hinzu.

In CertEnroll.dll werden Erweiterungen zur Attributauflistung einer CMC- oder PKCS #10-Anforderung hinzugefügt. Führen Sie zum Hinzufügen von Erweiterungen die folgenden Aktionen aus:

  1. Erstellen Sie ein IX509Extensions-Objekt .
  2. Erstellen Sie ein IX509Extension-Objekt , und rufen Sie die Initialize-Methode auf, um eine Erweiterung aus einem Objektbezeichner und Erweiterungswert zu erstellen, oder verwenden Sie eine der zuvor aufgeführten Schnittstellen, um eine der häufigeren Erweiterungen zu definieren.
  3. Fügen Sie jede neue Erweiterung, die im vorherigen Schritt erstellt wurde, der IX509Extensions-Auflistung hinzu, indem Sie die Add-Methode aufrufen.

addExtensionToRequestWStr

Die Funktion addExtensionToRequestWStr in Xenroll.dll fügt der Anforderung eine bestimmte Erweiterung hinzu.

In CertEnroll.dll muss eine bestimmte Erweiterung definiert und einer Erweiterungsauflistung hinzugefügt werden, bevor die Erweiterungsauflistung der Attributeauflistung einer CMC- oder PKCS #10-Anforderung hinzugefügt wird. Weitere Informationen finden Sie in der obigen Diskussion zu AddExtensionsToRequest.

EnableSMIMECapabilities

Die EnableSMIMECapabilities-Funktion in Xenroll.dll gibt einen booleschen Wert an, der angibt, ob die SMIMECapabilities-Erweiterung der Anforderung hinzugefügt werden soll.

Sie können die SmimeCapabilities-Eigenschaft für das IX509CertificateRequestPkcs10-Objekt aufrufen, um der Anforderung vor der Codierung automatisch ein IX509ExtensionSmimeCapabilities-Objekt hinzuzufügen.

IncludeSubjectKeyID

Die IncludeSubjectKeyID-Funktion in Xenroll.dll gibt einen booleschen Wert an oder ruft diesen ab, der angibt, ob der Anforderung die SubjectKeyIdentifier-Erweiterung hinzugefügt werden soll.

Standardmäßig wird die SubjectKeyIdentifier-Erweiterung erstellt, wenn das Anforderungsobjekt IX509CertificateRequestPkcs10 initialisiert wird. Sie können dieses Verhalten überschreiben, indem Sie die SuppressOids-Eigenschaft aufrufen.

Wenn Sie über ein öffentliches/privates Schlüsselpaar verfügen, können Sie auch die IX509ExtensionSubjectKeyIdentifier-Schnittstelle in CertEnroll.dll verwenden, um einer Zertifikatanforderung eine SubjectKeyIdentifier-Erweiterung hinzuzufügen, indem Sie die folgenden Aktionen ausführen:

  1. Erstellen Sie ein IX509Extensions-Objekt .
  2. Erstellen Sie ein IX509ExtensionSubjectKeyIdentifier-Objekt , und rufen Sie die InitializeEncode-Methode auf, indem Sie eine Zeichenfolge angeben, die den Bezeichner enthält. In der Regel ist dies ein 20-Byte-SHA-1-Hash des öffentlichen Schlüssels , der im Zertifizierungsstellensignaturzertifikat enthalten ist.
  3. Fügen Sie die erstellte Erweiterung der IX509Extensions-Auflistung hinzu, indem Sie die Add-Methode aufrufen.
  4. Erstellen Sie ein IX509AttributeExtensions-Objekt , und rufen Sie die InitializeEncode-Methode auf, und geben Sie die IX509Extensions-Auflistung für die Eingabe an.
  5. Rufen Sie ein ICryptAttributes-Auflistungsobjekt ab, indem Sie die CryptAttributes-Eigenschaft für ein vorhandenes IX509CertificateRequestPkcs10 - oder IX509CertificateRequestCmc-Anforderungsobjekt aufrufen.

resetExtensions

Die resetExtensions-Funktion in Xenroll.dll entfernt die Erweiterungsauflistung aus der Anforderung.

Um eine Erweiterung aus einer Anforderung nach Indexnummer mithilfe von CertEnroll.dll zu entfernen, rufen Sie die Remove-Methode für die IX509Extensions-Auflistung auf. Um alle Attribute aus einer Anforderung zu entfernen, rufen Sie die Clear-Methode auf.

Zuordnen Xenroll.dll zu CertEnroll.dll

ICryptAttributes

IX509Extension

IX509Extensions