Partager via


Interface ICertPolicy (certpol.h)

L’interface ICertPolicy fournit des communications entre le moteur serveur des services de certificats et le module de stratégie.

Note Le module de stratégie peut communiquer avec le moteur serveur des services de certificats à l’aide de l’interface ICertServerPolicy .
 
Le moteur serveur des services de certificats appelle les méthodes ICertPolicy pour effectuer les tâches suivantes :
  • Initialisez le module de stratégie.
  • Informez le module de stratégie qu’une nouvelle demande est entrée dans le système. Le module de stratégie peut ensuite utiliser les méthodes de l’interface ICertServerPolicy pour indiquer que la demande est bonne et doit être émise, incorrecte et doit être refusée, ou doit être retenue pour un examen ultérieur.
  • Récupérez une description du module de stratégie et de ses fonctionnalités.
  • Informez le module de stratégie que le serveur des services de certificats est en cours d’arrêt.

Les modules de stratégie doivent implémenter ICertPolicy et ICertManageModule.

ICertPolicy est défini dans Certpol.h. Toutefois, lorsque vous créez votre programme, utilisez Certsrv.h comme fichier include.

Les interfaces des services de certificats prennent en charge à la fois les modèles de thread d’appartement et de thread libre. Pour un meilleur débit, le threading gratuit est recommandé.

Héritage

L’interface ICertPolicy hérite de l’interface IDispatch. ICertPolicy a également les types de membres suivants :

Méthodes

L’interface ICertPolicy comporte ces méthodes.

 
ICertPolicy ::GetDescription

Retourne une description lisible du module de stratégie et de sa fonction.
ICertPolicy ::Initialize

Appelé par le moteur serveur pour permettre au module de stratégie d’effectuer des tâches d’initialisation.
ICertPolicy ::ShutDown

Appelé par le moteur de serveur avant l’arrêt du serveur.
ICertPolicy ::VerifyRequest

Avertit le module de stratégie qu’une nouvelle demande est entrée dans le système.

Remarques

Seule une autorité de certification autonome doit utiliser des modules de stratégie ou de sortie personnalisés ; lors de l’exécution d’une autorité de certification d’entreprise, l’utilisation de modules de stratégie et de sortie fournis par Microsoft est fortement recommandée.

Les implémenteurs d’ICertPolicy doivent également implémenter ICertManageModule. En outre, le ProgID d’une classe implémentant ICertPolicy doit être conforme à une convention de nommage. Plus précisément, le ProgID doit être de la forme suivante :

« MyApp. Stratégie »

MyApp est un spécificateur qui identifie l’application. Par exemple, en C++, le code suivant peut être utilisé dans la macro DECLARE_REGISTRY d’une classe (CMyCertPolicyModule) qui implémente ICertPolicy.

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

Pour l’exemple précédent, la valeur IDS_CERTPOLICYMODULE_DESC est un identificateur spécifique à l’application dans le fichier de ressources (.rc) pour une chaîne qui décrit la classe.

Les constantes de chaîne définies dans Certmod.h peuvent être utilisées pour simplifier le respect de la convention de nommage.

Constant Valeur
wszCERTPOLICYMODULE_POSTFIX TEXT(« . Stratégie « )
 

Aucun module de stratégie Visual Basic Scripting Edition ne peut être inscrit sur le serveur des services de certificat à la fois. Si plusieurs modules de stratégie de ce type sont inscrits sur le serveur des services de certification, le composant logiciel enfichable MMC de l’autorité de certification, l’application Services de certificats ou le programme de ligne de commande certutil peut produire des erreurs. Notez que l’environnement de développement Visual Basic Scripting Edition inscrit automatiquement une DLL lorsqu’elle est générée. Par conséquent, vous pouvez rencontrer cette situation lorsqu’un module de stratégie Visual Basic Scripting Edition est déjà inscrit et qu’un autre module de stratégie Visual Basic Scripting Edition est créé. Pour éviter cette situation, vous devez désinscrire l’un des modules de stratégie Visual Basic Scripting Edition à l’aide de l’instruction de ligne de commande regsvr32 /u FileName.dll, où FileName.dll est le nom du module de stratégie Visual Basic Scripting Edition que vous n’avez pas l’intention de rendre actif.

Les implémenteurs d’ICertPolicy dans Visual Basic Scripting Edition doivent nommer leur projet au format :

«MyApp»

MyApp est un spécificateur qui identifie l’application ; en outre, la classe qui implémente ICertPolicy doit être nommée « Policy ».

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucun pris en charge
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête certpol.h (inclure Certsrv.h)