Поделиться через


Интерфейс ICertPolicy (certpol.h)

Интерфейс ICertPolicy обеспечивает обмен данными между подсистемой сервера служб сертификации и модулем политики.

Примечание Модуль политики может взаимодействовать с подсистемой сервера служб сертификатов с помощью интерфейса ICertServerPolicy .
 
Подсистема сервера служб сертификатов вызывает методы ICertPolicy для выполнения следующих задач:
  • Инициализируйте модуль политики.
  • Уведомите модуль политики о том, что в систему поступил новый запрос. Затем модуль политики может использовать методы интерфейса ICertServerPolicy , чтобы указать, что запрос является хорошим и должен быть выдан, является плохим и должен быть отклонен или должен быть удержан для дальнейшего рассмотрения.
  • Получение описания модуля политики и его функциональных возможностей.
  • Уведомите модуль политики о том, что сервер служб сертификатов завершает работу.

Модули политики должны реализовывать как ICertPolicy , так и ICertManageModule.

ICertPolicy определяется в Certpol.h. Однако при создании программы используйте Certsrv.h в качестве включаемого файла.

Интерфейсы служб сертификатов поддерживают как модели потоков с подразделениями, так и с бесплатными потоками. Для повышения пропускной способности рекомендуется использовать свободные потоки.

Наследование

Интерфейс ICertPolicy наследуется от интерфейса IDispatch . ICertPolicy также имеет следующие типы членов:

Методы

Интерфейс ICertPolicy содержит следующие методы.

 
ICertPolicy::GetDescription

Возвращает понятное описание модуля политики и его функции.
ICertPolicy::Initialize

Вызывается подсистемой сервера, чтобы разрешить модулю политики выполнять задачи инициализации.
ICertPolicy::ShutDown

Вызывается подсистемой сервера перед завершением работы сервера.
ICertPolicy::VerifyRequest

Уведомляет модуль политики о том, что в систему поступил новый запрос.

Комментарии

Только автономный центр сертификации должен использовать пользовательские политики или модули выхода; при запуске корпоративного центра сертификации настоятельно рекомендуется использовать предоставленные корпорацией Майкрософт модули политики и выхода.

Разработчики ICertPolicy также должны реализовать ICertManageModule. Кроме того, ProgID для класса, реализующего ICertPolicy , должен соответствовать соглашению об именовании. В частности, Идентификатор ProgID должен иметь следующий вид:

"MyApp. Политика"

Где MyApp — это описатель, идентифицирующий приложение. Например, в C++ следующий код можно использовать в макросе DECLARE_REGISTRY класса (CMyCertPolicyModule), который реализует ICertPolicy.

DECLARE_REGISTRY(
    CMyCertPolicyModule,
    L"MyCode.Policy.1",
    L"MyCode.Policy",
    IDS_CERTPOLICYMODULE_DESC,
    THREADFLAGS_BOTH);

В предыдущем примере значение IDS_CERTPOLICYMODULE_DESC является идентификатором конкретного приложения в файле ресурсов (.rc) для строки, которая описывает класс .

Строковые константы, определенные в Certmod.h, можно использовать для упрощения в соответствии с соглашением об именовании.

Константа Значение
wszCERTPOLICYMODULE_POSTFIX TEXT(". Политика")
 

На сервере служб сертификатов одновременно может быть зарегистрировано не более одного модуля политики Visual Basic Scripting Edition. Если на сервере служб сертификации зарегистрировано несколько таких модулей политики, оснастка MMC центра сертификации, приложение служб сертификатов или программа командной строки certutil могут привести к ошибкам. Обратите внимание, что среда разработки Visual Basic Scripting Edition автоматически регистрирует библиотеку DLL при ее успешной сборке. В результате вы можете столкнуться с такой ситуацией, когда один модуль политики Visual Basic Scripting Edition уже зарегистрирован, а другой модуль политики Visual Basic Scripting Edition создан. Чтобы избежать этой ситуации, необходимо отменить регистрацию одного из модулей политики Visual Basic Scripting Edition с помощью инструкции командной строки regsvr32 /u FileName.dll, где FileName.dll — это имя модуля политики Visual Basic Scripting Edition, который не планируется сделать активным.

Разработчики ICertPolicy в Visual Basic Scripting Edition должны называть свой проект в формате :

"MyApp"

Где MyApp — описатель, идентифицирующий приложение; Кроме того, класс, реализующий ICertPolicy , должен иметь имя Policy.

Требования

Требование Значение
Минимальная версия клиента Ни одна версия не поддерживается
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header certpol.h (включая Certsrv.h)