Функции расширения
Формат сертификата X.509 версии 3 определяет несколько расширений, которые можно добавить в сертификат, чтобы предоставить расширенные сведения об использовании ключа, политиках и ограничениях сертификатов, альтернативных формах имен и многом другом.
CertEnroll.dll реализует следующие интерфейсы для управления расширениями сертификатов:
- IX509Extension
- IX509Extensions
- IX509ExtensionAlternativeNames
- IX509ExtensionAuthorityKeyIdentifier
- IX509ExtensionBasicConstraints
- IX509ExtensionCertificatePolicies
- IX509ExtensionEnhancedKeyUsage
- IX509ExtensionKeyUsage
- IX509ExtensionMSApplicationPolicies
- IX509ExtensionSmimeCapabilities
- IX509ExtensionSubjectKeyIdentifier
- IX509ExtensionTemplate
- IX509ExtensionTemplateName
В каждом из следующих разделов рассматривается функция, экспортируемая Xenroll.dll для управления расширениями сертификатов. В каждом разделе также описывается, как использовать CertEnroll.dll для замены функции, или указано, что сопоставление между двумя библиотеками не существует:
- AddCertTypeToRequestWStr
- AddCertTypeToRequestWStrEx
- AddExtensionsToRequest
- addExtensionToRequestWStr
- EnableSMIMECapabilities
- IncludeSubjectKeyID
- resetExtensions
- Связанные темы
AddCertTypeToRequestWStr
Функция AddCertTypeToRequestWStr в Xenroll.dll добавляет шаблон сертификата по имени в запрос.
При использовании CertEnroll.dll для включения шаблона в запрос сертификата рекомендуется использовать метод InitializeFromTemplateName для объекта запроса PKCS#10 или [*PKCS ) или метода InitializeFromInnerRequestTemplateName в запросе CMC.
Если определенный шаблон недоступен на клиенте, но ожидается, что он будет понят центру сертификации (ЦС), можно использовать интерфейс IX509ExtensionTemplateName для добавления шаблона версии 1 или с помощью интерфейса IX509ExtensionTemplate для добавления шаблона версии 2 в запрос на сертификат. Например, чтобы добавить шаблон версии 1, выполните следующие действия:
- Создайте объект IX509Extensions .
- Создайте объект IX509ExtensionTemplateName и вызовите метод InitializeEncode , указав имя шаблона.
- Добавьте расширение, созданное в коллекцию IX509Extensions , вызвав метод Add .
- Создайте объект IX509AttributeExtensions и вызовите метод InitializeEncode , указав коллекцию IX509Extensions для входных данных.
- Получите объект коллекции ICryptAttributes , вызвав свойство CryptAttributes для существующего объекта запроса IX509CertificateRequestPkcs10 или IX509CertificateRequestCmc .
AddCertTypeToRequestWStrEx
Функция AddCertTypeToRequestWStrEx в Xenroll.dll добавляет шаблон сертификата в запрос по имени, идентификатору объекта и версии.
Сведения об использовании CertEnroll.dll для включения сведений о шаблоне в запрос см. в разделе AddCertTypeToRequestWStr.
AddExtensionsToRequest
Функция AddExtensionsToRequest в Xenroll.dll добавляет коллекцию расширений в запрос.
В CertEnroll.dll расширения добавляются в коллекцию атрибутов запроса CMC или PKCS #10. Чтобы добавить расширения, выполните следующие действия.
- Создайте объект IX509Extensions .
- Создайте объект IX509Extension и вызовите метод Initialize , чтобы создать расширение на основе идентификатора объекта и значения расширения, или используйте любой из перечисленных выше интерфейсов для определения одного из наиболее распространенных расширений.
- Добавьте каждое новое расширение, созданное на предыдущем шаге, в коллекцию IX509Extensions , вызвав метод Add .
addExtensionToRequestWStr
Функция addExtensionToRequestWStr в Xenroll.dll добавляет в запрос определенное расширение.
В CertEnroll.dll определенное расширение должно быть определено и добавлено в коллекцию расширений перед добавлением коллекции расширений в коллекцию атрибутов CMC или запроса PKCS #10. Дополнительные сведения см. в описании AddExtensionsToRequest выше.
EnableSMIMECapabilities
Функция EnableSMIMECapabilities в Xenroll.dll задает или извлекает логическое значение, указывающее, следует ли добавлять расширение SMIMECapabilities в запрос.
Вы можете вызвать свойство SmimeCapabilities объекта IX509CertificateRequestPkcs10 , чтобы автоматически добавить объект IX509ExtensionSmimeCapabilities в запрос перед кодировкой.
IncludeSubjectKeyID
Функция IncludeSubjectKeyID в Xenroll.dll задает или извлекает логическое значение, указывающее, следует ли добавлять расширение SubjectKeyIdentifier в запрос.
По умолчанию расширение SubjectKeyIdentifier создается при инициализации объекта запроса IX509CertificateRequestPkcs10 . Это поведение можно переопределить, вызвав свойство SuppressOids .
Если у вас есть пара открытого и закрытого ключей, вы также можете использовать интерфейс IX509ExtensionSubjectKeyIdentifier в CertEnroll.dll, чтобы добавить расширение SubjectKeyIdentifier в запрос на сертификат, выполнив следующие действия:
- Создайте объект IX509Extensions .
- Создайте объект IX509ExtensionSubjectKeyIdentifier и вызовите метод InitializeEncode , указав строку, содержащую идентификатор. Как правило, это 20-байтовый хэш SHA-1 открытого ключа , содержащегося в сертификате подписи ЦС.
- Добавьте расширение, созданное в коллекцию IX509Extensions , вызвав метод Add .
- Создайте объект IX509AttributeExtensions и вызовите метод InitializeEncode , указав коллекцию IX509Extensions для входных данных.
- Получите объект коллекции ICryptAttributes , вызвав свойство CryptAttributes для существующего объекта запроса IX509CertificateRequestPkcs10 или IX509CertificateRequestCmc .
resetExtensions
Функция resetExtensions в Xenroll.dll удаляет коллекцию расширений из запроса.
Чтобы удалить расширение из запроса по номеру индекса с помощью CertEnroll.dll, вызовите метод Remove в коллекции IX509Extensions . Чтобы удалить все атрибуты из запроса, вызовите метод Clear .
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по