Interfaz ICertPolicy (certpol.h)
La interfaz ICertPolicy proporciona comunicaciones entre el motor de servidor de Servicios de certificados y el módulo de directivas.
- 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) |