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:
- IX509Extension
- IX509Erweiterungen
- IX509ExtensionAlternativeNames
- IX509ExtensionAuthorityKeyIdentifier
- IX509ExtensionBasicConstraints
- IX509ExtensionCertificatePolicies
- IX509ExtensionEnhancedKeyUsage
- IX509ExtensionKeyUsage
- IX509ExtensionMSApplicationPolicies
- IX509ExtensionSmimeCapabilities
- IX509ExtensionSubjectKeyIdentifier
- IX509ExtensionTemplate
- IX509ExtensionTemplateName
In den folgenden Abschnitten wird eine Funktion erläutert, die von Xenroll.dll exportiert wird, um Zertifikaterweiterungen zu verwalten. In jedem Abschnitt wird auch erläutert, wie CertEnroll.dll verwendet wird, um die Funktion zu ersetzen, oder gibt an, dass keine Zuordnung zwischen den beiden Bibliotheken vorhanden ist:
- AddCertTypeToRequestWStr
- AddCertTypeToRequestWStrEx
- AddExtensionsToRequest
- addExtensionToRequestWStr
- EnableSMIMECapabilities
- IncludeSubjectKeyID
- resetExtensions
- Zugehörige Themen
AddCertTypeToRequestWStr
Die Funktion AddCertTypeToRequestWStr in Xenroll.dll fügt einer Anforderung eine Zertifikatvorlage anhand des Namens hinzu.
Bei Verwendung CertEnroll.dll ist die bevorzugte Methode zum Integrieren einer Vorlage in eine Zertifikatanforderung die Verwendung der 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. Um beispielsweise eine Vorlage der Version 1 hinzuzufügen, führen Sie die folgenden Aktionen aus:
- Erstellen Sie ein IX509Extensions-Objekt.
- Erstellen Sie ein IX509ExtensionTemplateName-Objekt, und rufen Sie die InitializeEncode-Methode auf, und geben Sie dabei den Vorlagennamen an.
- Fügen Sie die erstellte Erweiterung der IX509Extensions-Auflistung hinzu, indem Sie die Add-Methode aufrufen.
- Erstellen Sie ein IX509AttributeExtensions-Objekt, und rufen Sie die InitializeEncode-Methode auf, und geben Sie bei der Eingabe die IX509Extensions-Auflistung an.
- 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 der Attributauflistung einer CMC- oder PKCS # 10-Anforderung hinzugefügt. Führen Sie die folgenden Aktionen aus, um Erweiterungen hinzuzufügen:
- Erstellen Sie ein IX509Extensions-Objekt.
- Erstellen Sie ein IX509Extension-Objekt, und rufen Sie die Initialize-Methode auf, um eine Erweiterung aus einem Objektbezeichner und einem Erweiterungswert zu erstellen, oder verwenden Sie eine der zuvor aufgeführten Schnittstellen, um eine der gängigeren Erweiterungen zu definieren.
- Fügen Sie der IX509Extensions-Auflistung jede im vorherigen Schritt erstellte neue Erweiterung hinzu, indem Sie die Add-Methode aufrufen.
addExtensionToRequestWStr
Die addExtensionToRequestWStr-Funktion 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 Attributauflistung einer CMC- oder PKCS # 10-Anforderung hinzugefügt wird. Weitere Informationen finden Sie oben in der Erläuterung AddExtensionsToRequest.
EnableSMIMECapabilities
Die EnableSMIMECapabilities-Funktion in Xenroll.dll gibt einen booleschen Wert an oder ruft einen booleschen Wert ab, der angibt, ob der Anforderung die SMIMECapabilities-Erweiterung 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 einen booleschen Wert ab, der angibt, ob der Anforderung die SubjectKeyIdentifier-Erweiterung hinzugefügt werden soll.
Standardmäßig wird die SubjectKeyIdentifier-Erweiterung erstellt, wenn das IX509CertificateRequestPkcs10-Anforderungsobjekt initialisiert wird. Sie können dieses Verhalten überschreiben, indem Sie die SuppressOids-Eigenschaft aufrufen.
Wenn Sie über ein Paar aus öffentlichem und privatem Schlüssel 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:
- Erstellen Sie ein IX509Extensions-Objekt.
- Erstellen Sie ein IX509ExtensionSubjectKeyIdentifier-Objekt, und rufen Sie die InitializeEncode-Methode auf, und geben Sie eine Zeichenfolge an, die den Bezeichner enthält. In der Regel ist dies ein 20-Byte-SHA-1-Hash des öffentlichen Schlüssels, der im Signaturzertifikat der Zertifizierungsstelle enthalten ist.
- Fügen Sie die erstellte Erweiterung der IX509Extensions-Auflistung hinzu, indem Sie die Add-Methode aufrufen.
- Erstellen Sie ein IX509AttributeExtensions-Objekt, und rufen Sie die InitializeEncode-Methode auf, und geben Sie bei der Eingabe die IX509Extensions-Auflistung an.
- 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.
Rufen Sie die Remove-Methode für die IX509Extensions-Auflistung auf, um eine Erweiterung mithilfe von CertEnroll.dll nach Indexnummer aus einer Anforderung zu entfernen. Um alle Attribute aus einer Anforderung zu entfernen, rufen Sie die Clear-Methode auf.