ICertPolicy インターフェイス (certpol.h)

ICertPolicy インターフェイスは、Certificate Services サーバー エンジンとポリシー モジュール間の通信を提供します。

メモ ポリシー モジュールは、 ICertServerPolicy インターフェイスを使用して Certificate Services サーバー エンジンと通信できます。
 
Certificate Services サーバー エンジンは ICertPolicy メソッドを呼び出して、次のタスクを実行します。
  • ポリシー モジュールを初期化します。
  • 新しい要求がシステムに入力されたことをポリシー モジュールに通知します。 その後、ポリシー モジュールは ICertServerPolicy インターフェイスのメソッドを使用して、要求が適切であり、発行する必要があり、無効であり、拒否する必要があることを示すことができます。また、後で考慮するために保持する必要があります。
  • ポリシー モジュールとその機能の説明を取得します。
  • Certificate Services サーバーが終了していることをポリシー モジュールに通知します。

ポリシー モジュールでは、 ICertPolicyICertManageModule の両方を実装する必要があります。

ICertPolicy は Certpol.h で定義されています。 ただし、プログラムを作成するときは、インクルード ファイルとして Certsrv.h を使用します。

Certificate Services インターフェイスは、アパートメント スレッディング モデルとフリー スレッド モデルの両方をサポートします。 スループットを向上させるために、無料スレッド処理をお勧めします。

継承

ICertPolicy インターフェイスは IDispatch インターフェイスから継承されます。 ICertPolicy には、次の種類のメンバーもあります。

メソッド

ICertPolicy インターフェイスには、これらのメソッドがあります。

 
ICertPolicy::GetDescription

ポリシー モジュールとその関数の人間が判読できる説明を返します。
ICertPolicy::Initialize

ポリシー モジュールが初期化タスクを実行できるように、サーバー エンジンによって呼び出されます。
ICertPolicy::ShutDown

サーバーが終了する前に、サーバー エンジンによって呼び出されます。
ICertPolicy::VerifyRequest

新しい要求がシステムに入力されたことをポリシー モジュールに通知します。

注釈

カスタム ポリシーまたは終了モジュールを使用する必要があるのは、スタンドアロン の証明機関 のみです。エンタープライズ証明機関を実行する場合は、Microsoft が提供するポリシーと終了モジュールの使用を強くお勧めします。

ICertPolicy の実装者は、ICertManageModule も実装する必要があります。 さらに、 ICertPolicy を実装するクラスの ProgID は、名前付け規則に準拠している必要があります。 具体的には、ProgID は次の形式である必要があります。

"MyApp。ポリシー"

ここで 、MyApp はアプリケーションを識別する指定子です。 たとえば、C++ では、 ICertPolicy を実装するクラス (CMyCertPolicyModule) のDECLARE_REGISTRY マクロで次のコードを使用できます。

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 スナップイン、Certificate Services アプリケーション、または certutil コマンド ライン プログラムでエラーが発生する可能性があります。 Visual Basic Scripting Edition 開発環境では、DLL が正常にビルドされると自動的に登録されることに注意してください。 その結果、1 つの Visual Basic Scripting Edition ポリシー モジュールが既に登録されていて、別の Visual Basic Scripting Edition ポリシー モジュールが作成されている場合に、このような状況が発生する可能性があります。 この状況を回避するには、コマンド ライン命令 regsvr32 /u FileName.dllを使用して、Visual Basic Scripting Edition ポリシー モジュールの 1 つを登録解除する必要があります。 ここで、FileName.dll はアクティブにする予定のない Visual Basic Scripting Edition ポリシー モジュールの名前です。

Visual Basic Scripting Edition の ICertPolicy の実装者は、次の形式でプロジェクトに名前を付ける必要があります。

"MyApp"

ここで 、MyApp はアプリケーションを識別する指定子です。さらに、 ICertPolicy を実装するクラスには "Policy" という名前を付ける必要があります。

要件

要件
サポートされている最小のクライアント サポートなし
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー certpol.h (Certsrv.h を含む)