Interfaz ICertPolicy (certpol.h)

La interfaz ICertPolicy proporciona comunicaciones entre el motor de servidor de Servicios de certificados y el módulo de directivas.

Nota El módulo de directivas puede comunicarse con el motor de servidor de Servicios de certificados mediante la interfaz ICertServerPolicy .
 
El motor de servidor de Servicios de certificados llama a los métodos ICertPolicy para realizar las siguientes tareas:
  • Inicialice el módulo de directivas.
  • Notifique al módulo de directiva que una nueva solicitud ha entrado en el sistema. Después, el módulo de directivas puede usar los métodos de la interfaz ICertServerPolicy para indicar que la solicitud es buena y debe emitirse, es incorrecta y debe denegarse o debe tenerse en cuenta posteriormente.
  • Recupere una descripción del módulo de directivas y su funcionalidad.
  • Notifique al módulo de directiva que se está finalizando el servidor de Servicios de certificados.

Los módulos de directiva deben implementar ICertPolicy e ICertManageModule.

ICertPolicy se define en Certpol.h. Sin embargo, al crear el programa, use Certsrv.h como archivo de inclusión.

Las interfaces de Servicios de certificados admiten modelos de subprocesos de apartamento y de subprocesos libres. Para mejorar el rendimiento, se recomienda el subproceso libre.

Herencia

La interfaz ICertPolicy hereda de la interfaz IDispatch . ICertPolicy también tiene estos tipos de miembros:

Métodos

La interfaz ICertPolicy tiene estos métodos.

 
ICertPolicy::GetDescription

Devuelve una descripción legible del módulo de directivas y su función.
ICertPolicy::Initialize

Lo llama el motor de servidor para permitir que el módulo de directivas realice tareas de inicialización.
ICertPolicy::ShutDown

Lo llama el motor de servidor antes de que finalice el servidor.
ICertPolicy::VerifyRequest

Notifica al módulo de directiva que una nueva solicitud ha entrado en el sistema.

Comentarios

Solo una entidad de certificación independiente debe usar módulos personalizados de directiva o salida; cuando se ejecuta una entidad de certificación empresarial, se recomienda encarecidamente el uso de módulos de directiva y salida proporcionados por Microsoft.

Los implementadores de ICertPolicy también deben implementar ICertManageModule. Además, el ProgID de una clase que implementa ICertPolicy debe cumplir una convención de nomenclatura. En concreto, el ProgID debe tener el formato :

"MyApp. Directiva"

Donde MyApp es un especificador que identifica la aplicación. Por ejemplo, en C++, se podría usar el código siguiente en la macro DECLARE_REGISTRY de una clase (CMyCertPolicyModule) que implementa ICertPolicy.

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

En el ejemplo anterior, el valor de IDS_CERTPOLICYMODULE_DESC es un identificador específico de la aplicación en el archivo de recursos (.rc) de una cadena que describe la clase .

Las constantes de cadena definidas en Certmod.h se pueden usar para simplificar el seguimiento de la convención de nomenclatura.

Constante Valor
wszCERTPOLICYMODULE_POSTFIX TEXT(". Directiva")
 

No se puede registrar más de un módulo de directivas de Visual Basic Scripting Edition en el servidor de Servicios de certificados a la vez. Si hay más de un módulo de directiva registrado en el servidor de Servicios de certificados, el complemento MMC de entidad de certificación, la aplicación servicios de certificados o el programa de línea de comandos certutil pueden producir errores. Tenga en cuenta que el entorno de desarrollo de Visual Basic Scripting Edition registra automáticamente un archivo DLL cuando se compila correctamente. Como resultado, puede encontrarse con esta situación cuando ya está registrado un módulo de directivas de Visual Basic Scripting Edition y se crea otro módulo de directivas de Visual Basic Scripting Edition. Para evitar esta situación, debe anular el registro de uno de los módulos de directivas de Visual Basic Scripting Edition mediante la instrucción de línea de comandos regsvr32 /u FileName.dll, donde FileName.dll es el nombre del módulo de directivas de Visual Basic Scripting Edition que no pretende activar.

Los implementadores de ICertPolicy en Visual Basic Scripting Edition deben asignar un nombre al proyecto con el formato siguiente:

"MyApp"

Donde MyApp es un especificador que identifica la aplicación; además, la clase que implementa ICertPolicy debe denominarse "Policy".

Requisitos

Requisito Value
Cliente mínimo compatible No se admite ninguno
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado certpol.h (incluya Certsrv.h)