ICertificateEnrollmentPolicyServerSetup
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ICertificateEnrollmentPolicyServerSetup インターフェイスは、Active Directory 証明書サービス (ADCS) における証明書登録ポリシー (CEP) Web サービスを表します。
メソッド 6
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
証明書登録ポリシー (CEP) Web サービスのセットアップ失敗に関する追加情報を含む文字列を取得します。
| pVal | LPWSTR* | out | 直近の操作で発生したエラーの説明文字列を受け取る LPWSTR へのポインタである。 |
解説(Remarks)
ICertificateEnrollmentPolicyServerSetup インターフェイスのいずれかのメソッドを呼び出すと、このプロパティ値は空のエラー文字列にリセットされます。
ICertificateEnrollmentPolicyServerSetup オブジェクトを既定の構成で初期化します。
戻り値
| 戻り値 | 説明 |
|---|---|
|
ユーザーはドメイン ルートまたはエンタープライズの管理者である必要があります。また、コンピューターはドメインに参加している必要があります。
ユーザーがドメイン ルート管理者またはエンタープライズ管理者でない場合、ErrorString プロパティには次の値が設定されます。 "セットアップを実行するには、Enterprise Admins グループのメンバーである必要があります。" コンピューターがドメインに参加していない場合、ErrorString プロパティには次の値が設定されます。 "証明書登録 Web サービスまたは証明書登録ポリシー Web サービスは、ドメインのメンバーではないコンピューターにはインストールできません。" |
|
|
ICertificateEnrollmentPolicyServerSetup オブジェクトは既に初期化されています。ErrorString プロパティには次の値が設定されます。
"セットアップ オブジェクトは既に初期化されています。このオブジェクトを複数回初期化することはできません。" |
解説(Remarks)
このメソッドは次の処理を実行します。
- 既定の認証手順を Kerberos に設定します。認証方法を変更するには SetProperty を呼び出します。
- 既定の URL を https://computerDNSname/ADPolicyProvider_CEP_Kerberos/service.svc/CEP に設定します。
-
CEP サービスが Windows Server 2008 R2 を実行しているコンピューターにインストールされているかどうかを確認します。
メモ この確認に失敗した場合、このメソッドは ErrorString プロパティに "証明書登録 Web サービスまたは証明書登録ポリシー Web サービスは、Windows Server 2008 R2 バージョンの ADPrep /forestprep が正常に実行された Active Directory フォレスト内のメンバー サーバーにインストールする必要があります。" を設定します。
証明書登録ポリシー (CEP) Web サービスの構成について、CEPSetupProperty 列挙値を取得します。
| propertyId | CEPSetupProperty | in | 取得するプロパティ値を指定する CEPSetupProperty 列挙型の値です。有効な値は次のとおりです。
| ||||||||||
| pPropertyValue | VARIANT* | out | プロパティ値を格納する VARIANT 変数へのポインターです。 propertyId パラメーターに ENUM_CEPSETUPPROP_AUTHENTICATION を指定した場合、GetProperty メソッドが正常に終了すると、pPropertyValue パラメーターには次のいずれかの定数が格納されます。
propertyId パラメーターに ENUM_CEPSETUPPROP_SSLCERTHASH を指定した場合、GetProperty メソッドが正常に終了すると、pPropertyValue パラメーターにはハッシュを含む VT_BSTR サブタイプが格納されます。 propertyId パラメーターに ENUM_CEPSETUPPROP_AUTHENTICATION を指定した場合、pPropertyValue パラメーターには認証手順が格納されます。 propertyId パラメーターに ENUM_CEPSETUPPROP_URL を指定した場合、pPropertyValue パラメーターには証明書登録ポリシー (CEP) Web サービスの URL が格納されます。 propertyId パラメーターに ENUM_CEPSETUPPROP_KEYBASED_RENEWAL を指定した場合、pPropertyValue パラメーターには、KeyBasedRenewal テンプレートのポリシーのみを返すモードで登録ポリシー サーバーをセットアップするかどうかを示す VT_BOOL サブタイプを設定する必要があります。 |
戻り値
| 戻り値 | 説明 |
|---|---|
| propertyId 引数が CEPSetupProperty 列挙型のメンバーではありません。 | |
| pPropertyValue パラメーターに NULL を指定することはできません。 | |
|
ICertificateEnrollmentPolicyServerSetup オブジェクトが初期化されていません。
ErrorString プロパティ値には "セットアップ オブジェクトが初期化されていません。InitializeInstallDefaults メソッドでセットアップ オブジェクトを初期化してください。" が設定されます。 |
証明書登録ポリシー (CEP) Web サービスの構成について、CEPSetupProperty 列挙値を指定します。
| propertyId | CEPSetupProperty | in | 設定するプロパティ値を指定する CEPSetupProperty 列挙型の値です。有効な値は次のとおりです。
| ||||||||||
| pPropertyValue | VARIANT* | in | プロパティ値を格納する VARIANT 変数へのポインターです。 propertyId パラメーターに ENUM_CEPSETUPPROP_AUTHENTICATION を指定する場合、VARIANT のサブタイプは VT_I2、VT_I4、または VT_UII4 である必要があり、pPropertyValue 引数は次のいずれかの定数である必要があります。
propertyId パラメーターに ENUM_CEPSETUPPROP_SSLCERTHASH を指定する場合、pPropertyValue パラメーターには、認証に使用する証明書のハッシュを含む VT_BSTR サブタイプを設定する必要があります。 propertyId パラメーターに ENUM_CEPSETUPPROP_AUTHENTICATION を指定した場合、pPropertyValue パラメーターには認証手順が格納されます。 propertyId パラメーターに ENUM_CEPSETUPPROP_URL を指定した場合、pPropertyValue パラメーターには証明書登録ポリシー (CEP) Web サービスの URL が格納されます。 propertyId パラメーターに ENUM_CEPSETUPPROP_KEYBASED_RENEWAL を指定する場合、pPropertyValue パラメーターには、KeyBasedRenewal テンプレートのポリシーのみを返すモードで登録ポリシー サーバーをセットアップするかどうかを示す VT_BOOL サブタイプを設定する必要があります。 |
戻り値
| 戻り値 | 説明 |
|---|---|
| propertyId 引数が CEPSetupProperty 列挙型のメンバーではないか、ENUM_CEPSETUPPROP_URL の値を設定しようとしました。 | |
| pPropertyValue パラメーターに NULL を指定することはできません。 | |
|
ICertificateEnrollmentPolicyServerSetup オブジェクトが初期化されていません。
ErrorString プロパティ値には "セットアップ オブジェクトが初期化されていません。InitializeInstallDefaults メソッドでセットアップ オブジェクトを初期化してください。" が設定されます。 |
|
ENUM_CEPSETUPPROP_AUTHENTICATION プロパティを設定する場合、VARIANT のサブタイプは VT_I2、VT_I4、または VT_UI4 である必要があります。 |
解説(Remarks)
SetProperty メソッドを呼び出す前に、InitializeInstallDefaults を呼び出す必要があります。
ICertificateEnrollmentPolicyServerSetup オブジェクトで構成された証明書登録ポリシー (CEP) Web サービスをインストールします。
戻り値
| 戻り値 | 説明 |
|---|---|
| イベント トレース ディレクトリまたはアプリケーション ディレクトリとして指定された名前は既に存在していましたが、ディレクトリではなくファイルを指していました。 | |
|
CEP アプリケーションが既に存在します。詳細については「解説」を参照してください。 |
|
ICertificateEnrollmentPolicyServerSetup オブジェクトが初期化されていません。
ErrorString プロパティ値には "セットアップ オブジェクトが初期化されていません。InitializeInstallDefaults メソッドでセットアップ オブジェクトを初期化してください。" が設定されます。 |
解説(Remarks)
この関数は次の処理を実行します。
- Windows Management Instrumentation (WMI) を初期化します。
-
同じ名前のアプリケーションが既に存在しないことを確認して、CEP 構成を検証します。アプリケーション名は CEP URL の一部であり、URL は "https://computerDNSname/ADPolicyProvider_cep_AuthenticationType/service.svc/cep" の形式です。アプリケーション名は "ADPolicyProvider_cep_AuthenticationType" で構成され、AuthenticationType には次のいずれかを指定できます。
- kerberos
- usernamepassword
- certificate
メモ 同じ名前のアプリケーションが存在する場合、ErrorString プロパティには "このロール サービスは既定の Web サイトに既に存在するため、セットアップは追加できませんでした。既存のロール サービスを削除するか、別の証明機関 (CA) または認証の種類を選択してください。" が設定されます。 -
%windir%\systemdata\cep\ADPolicyProvider_cep_AuthenticationType アプリケーション ディレクトリを作成します。メモ 指定した名前がディレクトリとして既に存在する場合、このメソッドはエラーを返しません。ただし、指定した名前がファイルとして存在する場合や、その他のエラーが発生した場合、このメソッドは失敗の HRESULT を返し、ErrorString プロパティに "ディレクトリ %1 の作成に失敗しました。" を設定します。
- %windir%\systemdata\cep\ADPolicyProvider_cep_AuthenticationType\Traces イベント トレース ディレクトリを作成します。
- Web.config ファイルと Service.svc ファイルを作成し、アプリケーション ディレクトリに書き込みます。ファイルが既に存在する場合は上書きされます。
- IIS アプリケーション プールを作成します。既定では、このプールは ApplicationPoolIdentity アカウントで実行されます。
- 既定の Web サイトにアプリケーションを作成します。
- ポート 443 へのセキュリティで保護された (https) バインドを作成し、構成時に SetProperty メソッドの呼び出しで証明書ハッシュが指定されている場合はそれを設定します。
- SetProperty を呼び出して pPropertyValue 引数に X509AuthCertificate または X509AuthUsername を指定した場合、IIS の認証を匿名に設定します。SetProperty を呼び出して X509AuthKerberos を指定した場合は、認証を Windows 認証に設定します。
- 構成時に選択した認証の種類に応じて SSL フラグを設定します。すべての認証の種類における既定のフラグは SSL (セキュリティで保護されたチャネルを要求) および SSL_128 (128 ビット暗号化) です。さらに、X509AuthCertificate を指定した場合は、SSL_REQUIRE_CERT および SSL_NEGOTIATE_CERT フラグが設定されます。
- イベント トレース ディレクトリに読み取りアクセス権と書き込みアクセス権を追加します。
-
Active Directory の Deleted Objects コンテナーのセキュリティ記述子を更新し、コンピューターおよびアプリケーション プールからのアクセスを許可します。これにより、関連する Active Directory オブジェクトが削除されたときに、CEP サービスが証明機関に通知できるようになります。Active Directory がドメイン コントローラーにインストールされている場合、コンピューターとアプリケーション プールの両方が Deleted Objects コンテナーへのアクセスを許可されます。Active Directory がドメイン コントローラーにインストールされていない場合は、コンピューターのみがアクセスを許可されます。
メモ Deleted Objects コンテナーへのアクセスに失敗した場合、このメソッドは失敗の HRESULT を返し、ErrorString プロパティに "セットアップは、証明書登録ポリシー Web サービス アカウントに ""Deleted Objects"" コンテナーの List 権限を付与できません。この Web サービスは、証明書テンプレートなどの Active Directory オブジェクトの削除を検出できません。セットアップを完了するには、Domain Admins グループのメンバーが Active Directory ドメイン サービス (AD DS) の ""Deleted Objects"" コンテナーに対する List 権限を、証明書登録ポリシー Web サービス アカウントに手動で付与する必要があります。" を設定します。
証明書登録ポリシー (CEP) Web サービスを削除します。
| pAuthKeyBasedRenewal | VARIANT* | in | 認証の種類と、省略可能な KeyBasedRenewal の値を格納する VARIANT 配列へのポインターです。 配列の最初の要素には、認証の種類として次の値を設定できます。
|
戻り値
| 戻り値 | 説明 |
|---|---|
|
ユーザーはローカル管理者である必要があります。
ErrorString プロパティ値には "このセットアップを実行するには、ローカル コンピューターの管理者である必要があります。" が設定されます。 |
|
|
ICertificateEnrollmentPolicyServerSetup オブジェクトが初期化されています。オブジェクトは、InitializeInstallDefaults の呼び出しが成功したときに初期化されます。
ErrorString プロパティ値には "オブジェクトは初期化されています。初期化済みのオブジェクトに対して UnInstall を呼び出すことはできません。" が設定されます。 |
解説(Remarks)
このメソッドを呼び出して CEP サービスを削除できます。ただし、既に初期化されている ICertificateEnrollmentPolicyServerSetup オブジェクトに対して UnInstall メソッドを呼び出すことはできないため、UnInstall を呼び出す前に新しい ICertificateEnrollmentPolicyServerSetup を作成する必要があります。
pAuthKeyBasedRenewal パラメーターが NULL の場合、この関数は次の処理を実行します。
- Windows Management Instrumentation (WMI) を初期化します。
- %Windir%\Systemdata\Cep ディレクトリと、存在する可能性のあるすべてのアプリケーション サブディレクトリの削除を試みます。詳細については、Install の「解説」セクションを参照してください。
- アプリケーション プールと、そのプール内のすべてのアプリケーションの削除を試みます。
- Active Directory の Deleted Objects コンテナーのセキュリティ記述子を更新し、コンピューターによるアクセスを拒否するよう試みます。詳細については、Install の「解説」セクションを参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ICertificateEnrollmentPolicyServerSetup "{859252CC-238C-4A88-B8FD-A37E7D04E68B}" #usecom global ICertificateEnrollmentPolicyServerSetup IID_ICertificateEnrollmentPolicyServerSetup "{}" #comfunc global ICertificateEnrollmentPolicyServerSetup_get_ErrorString 7 var #comfunc global ICertificateEnrollmentPolicyServerSetup_InitializeInstallDefaults 8 #comfunc global ICertificateEnrollmentPolicyServerSetup_GetProperty 9 int,var #comfunc global ICertificateEnrollmentPolicyServerSetup_SetProperty 10 int,var #comfunc global ICertificateEnrollmentPolicyServerSetup_Install 11 #comfunc global ICertificateEnrollmentPolicyServerSetup_UnInstall 12 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ICertificateEnrollmentPolicyServerSetup "{859252CC-238C-4A88-B8FD-A37E7D04E68B}" #usecom global ICertificateEnrollmentPolicyServerSetup IID_ICertificateEnrollmentPolicyServerSetup "{}" #comfunc global ICertificateEnrollmentPolicyServerSetup_get_ErrorString 7 sptr #comfunc global ICertificateEnrollmentPolicyServerSetup_InitializeInstallDefaults 8 #comfunc global ICertificateEnrollmentPolicyServerSetup_GetProperty 9 int,sptr #comfunc global ICertificateEnrollmentPolicyServerSetup_SetProperty 10 int,sptr #comfunc global ICertificateEnrollmentPolicyServerSetup_Install 11 #comfunc global ICertificateEnrollmentPolicyServerSetup_UnInstall 12 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。