ICertificateEnrollmentServerSetup
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ICertificateEnrollmentServerSetup インターフェイスは、Active Directory 証明書サービス (ADCS) における証明書登録 Web サービス (CES) を表します。
メソッド 7
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
証明書登録 Web サービス (CES) のセットアップ失敗に関する追加情報を含む文字列を取得します。
| pVal | LPWSTR* | out | 直近の操作で発生したエラーの説明文字列を受け取る LPWSTR へのポインタである。 |
解説(Remarks)
ICertificateEnrollmentServerSetup インターフェイスのいずれかのメソッドを呼び出すと、このプロパティ値は空のエラー文字列にリセットされます。
ICertificateEnrollmentServerSetup オブジェクトを既定の構成で初期化します。
戻り値
| 戻り値 | 説明 |
|---|---|
|
ユーザーはドメイン ルートまたはエンタープライズの管理者である必要があります。また、コンピューターはドメインに参加している必要があります。
ユーザーがドメイン ルートまたはエンタープライズの管理者でない場合、ErrorString プロパティには次の値が設定されます。 "You must be a member of the Enterprise Admins group to run Setup." コンピューターがドメインに参加していない場合、ErrorString プロパティには次の値が設定されます。 "The Certificate Enrollment Web Service or Certificate Enrollment Policy Web Service cannot be installed on a computer that is not a member of a domain." |
|
|
ICertificateEnrollmentServerSetup オブジェクトは既に初期化されています。ErrorString プロパティには次の値が設定されます。
"The setup object has already been initialized. This object cannot be initialized more than once." |
解説(Remarks)
このメソッドは次の処理を実行します。
-
ICertificateEnrollmentServerSetup オブジェクトが既に初期化されているかどうかを判定します。
メモ このチェックに失敗した場合、このメソッドは ErrorString プロパティに "The setup object has already been initialized. This object cannot be initialized more than once." を設定します。
-
ユーザーがドメイン ルートまたはエンタープライズの管理者であるかどうかを判定します。
メモ このチェックに失敗した場合、このメソッドは ErrorString プロパティに "You must be a member of the Enterprise Admins group to run Setup." を設定します。
-
コンピューターがドメインに参加しているかどうかを判定します。
メモ このチェックに失敗した場合、このメソッドは ErrorString プロパティに "The Certificate Enrollment Web Service or Certificate Enrollment Policy Web Service cannot be installed on a computer that is not a member of a domain." を設定します。
- 既定の認証方式を Kerberos に設定します。認証方式を変更するには SetProperty を呼び出します。
-
CES が Windows Server 2008 R2 を実行しているコンピューターにインストールされているかどうかを判定します。
メモ このチェックに失敗した場合、このメソッドは ErrorString プロパティに "The Certificate Enrollment Web Service or Certificate Enrollment Policy Web Service must be installed on a member server in an Active Directory forest in which the Windows Server 2008 R2 version of ADPrep /forestprep has been successfully run." を設定します。
- 既定のサーバー コンテキストを組み込みアカウント ApplicationPoolIdentity に設定します。
- ENUM_CESSETUPPROP_RENEWALONLY プロパティを FALSE に設定します。
-
有効な証明機関 (CA) 構成が存在する場合、ENUM_CESSETUPPROP_URL プロパティを "https://computerDNSname/SanitizedCAShortName_CES_Kerberos/service.svc/ces" に設定します。有効な構成が存在しない場合、ENUM_CESSETUPPROP_URL プロパティは設定されません。SanitizedCAShortName は CA のサニタイズされた短い名前です。サニタイズされた名前の詳細については、GetConfig を参照してください。
メモ 証明機関がスタンドアロン CA の場合、ErrorString プロパティに "The Certificate Enrollment Web Service cannot be used with a standalone certification authority (CA). It can only be used with an enterprise CA." が設定されます。
証明書登録 Web サービス (CES) の構成に対する CESSetupProperty 列挙値を取得します。
| propertyId | CESSetupProperty | in | 取得するプロパティ値を指定する CESSetupProperty 列挙値。詳細については、「解説」を参照してください。 |
| pPropertyValue | VARIANT* | out | プロパティ値を格納する VARIANT 変数へのポインター。 |
戻り値
| 戻り値 | 説明 |
|---|---|
| propertyId 引数が CESSetupProperty 列挙型のメンバーではありません。 | |
| pPropertyValue パラメーターに NULL を指定することはできません。 | |
|
ICertificateEnrollmentServerSetup オブジェクトが初期化されていません。
ErrorString プロパティ値には "The setup object has not been initialized. Please initialize the setup object with the InitializeInstallDefaults method." が設定されます。 |
解説(Remarks)
CESSetupProperty 列挙型には次の値が含まれます。
- ENUM_CESSETUPPROP_USE_IISAPPPOOLIDENTITY
- ENUM_CESSETUPPROP_CACONFIG
- ENUM_CESSETUPPROP_AUTHENTICATION
- ENUM_CESSETUPPROP_SSLCERTHASH
- ENUM_CESSETUPPROP_URL
- ENUM_CESSETUPPROP_RENEWALONLY
これらの値の意味は次のとおりです。
- ENUM_CESSETUPPROP_USE_IISAPPPOOLIDENTITY プロパティは、サーバー コンテキストが ApplicationPoolIdentity であるかどうかを指定する VT_BOOL 値です。
- ENUM_CESSETUPPROP_CACONFIG プロパティは、computerDNSname/CAName 形式の証明機関 (CA) 構成文字列 (VT_BSTR) を格納します。computerDNSname はサーバーの完全修飾 DNS 名、CAName は CA の共通名です。
-
ENUM_CESSETUPPROP_AUTHENTICATION プロパティは、使用する認証方式の種類を指定します。GetProperty メソッドが正常に返された場合、pPropertyValue 引数には次のいずれかの定数が格納されます。
- X509AuthKerberos
- X509AuthUsername
- X509AuthCertificate
- ENUM_CESSETUPPROP_SSLCERTHASH プロパティは、認証時に使用される証明書のハッシュ (VT_BSTR) を格納します。ENUM_CESSETUPPROP_AUTHENTICATION プロパティは X509AuthCertificate に設定されている必要があります。
- ENUM_CESSETUPPROP_URL プロパティは、CES サービスの URL を格納します。GetProperty メソッドが正常に返された場合、pPropertyValue 引数には "https://computerDNSname/ADPolicyProvider_ces_AuthenticationType/service.svc/ces" 形式の URL を格納する VT_BSTR サブタイプが含まれます。認証の種類には次のいずれかを指定できます。
- kerberos
- usernamepassword
- certificate
- ENUM_CESSETUPPROP_RENEWALONLY プロパティは、CES が証明書の更新のみを処理できるかどうかを指定する VT_BOOL 値です。
証明書登録 Web サービス (CES) の構成に対する CESSetupProperty 列挙値を指定します。
| propertyId | CESSetupProperty | in | 取得するプロパティ値を指定する CESSetupProperty 列挙値。 |
| pPropertyValue | VARIANT* | in | プロパティ値を格納する VARIANT 変数へのポインター。 |
戻り値
| 戻り値 | 説明 |
|---|---|
|
propertyId 引数が CESSetupProperty 列挙型のメンバーではありません。
また、ENUM_CESSETUPPROP_AUTHENTICATION プロパティを設定する場合は、pPropertyValue 引数に次のいずれかの値を指定する必要があります。
|
|
| pPropertyValue パラメーターに NULL を指定することはできません。 | |
|
ICertificateEnrollmentServerSetup オブジェクトが初期化されていません。
ErrorString プロパティ値には "The setup object has not been initialized. Please initialize the setup object with the InitializeInstallDefaults method." が設定されます。 |
|
ENUM_CESSETUPPROP_AUTHENTICATION プロパティを設定する場合、VARIANT のサブタイプは VT_I2、VT_I4、または VT_UI4 である必要があります。 |
解説(Remarks)
SetProperty を呼び出す前に、InitializeInstallDefaults を呼び出す必要があります。
ENUM_CESSETUPPROP_URL プロパティを設定することはできません。
WSEnrollmentServer アプリケーション プールが既に存在し、WMI が初期化されている場合、ENUM_CESSETUPPROP_USE_IISAPPPOOLIDENTITY を設定することはできません。
ENUM_CESSETUPPROP_AUTHENTICATION プロパティを設定する場合、VARIANT のサブタイプは VT_I2、VT_I4、または VT_UII4 である必要があり、pPropertyValue 引数は次のいずれかの定数である必要があります。
- X509AuthKerberos
- X509AuthUsername
- X509AuthCertificate
対象のサーバーがスタンドアロン証明機関である場合、ENUM_CESSETUPPROP_CACONFIG プロパティを設定することはできません。ErrorString プロパティには "The Certificate Enrollment Web Service cannot be used with a standalone certification authority (CA). It can only be used with an enterprise CA." が設定されます。
.
証明書登録 Web サービス (CES) が実行されるアプリケーション プールのユーザー アカウント情報を指定します。
| bstrUsername | LPWSTR | in | アカウントのユーザー名を格納する BSTR。 |
| bstrPassword | LPWSTR | in | アカウントのパスワードを格納する BSTR。 |
戻り値
| 戻り値 | 説明 |
|---|---|
| bstrUsername 引数と bstrPassword 引数を NULL または空にすることはできません。 | |
|
ICertificateEnrollmentServerSetup オブジェクトが初期化されていません。
ErrorString プロパティ値には "The setup object has not been initialized. Please initialize the setup object with the InitializeInstallDefaults method." が設定されます。 |
解説(Remarks)
SetApplicationPoolCredentials メソッドは、ユーザー資格情報が有効かどうか、およびそのアカウントが IIS_IUSRS グループのメンバーであるかどうかを判定します。エラーが発生した場合、ErrorString プロパティには次のいずれかが設定されることがあります。
- "Setup is unable to obtain security information for the account."
- "Setup is unable to check the membership of the account."
- "The account is not a member of the local machine's IIS_IUSRS group."
- "Fail to retrieve the DNS name of the computer."
- "The account should be a domain account. Local account is not allowed."
ICertificateEnrollmentServerSetup オブジェクトで構成された証明書登録 Web サービス (CES) をインストールします。
戻り値
| 戻り値 | 説明 |
|---|---|
| イベント トレーシング ディレクトリまたはアプリケーション ディレクトリに指定した名前が既に存在していますが、それはディレクトリではなくファイルです。 | |
|
CES アプリケーションは既に存在します。詳細については、「解説」を参照してください。 |
|
ICertificateEnrollmentServerSetup オブジェクトが初期化されていません。
ErrorString プロパティ値には "The setup object has not been initialized. Please initialize the setup object with the InitializeInstallDefaults method." が設定されます。 |
解説(Remarks)
この関数は次の処理を実行します。
- Windows Management Instrumentation (WMI) を初期化します。
-
同じ名前のアプリケーションが既に存在しないことを確認して、CES 構成を検証します。アプリケーション名は CES の URL の一部であり、URL は "https://computerDNSname/SanitizedCAShortName_ces_AuthenticationType/service.svc/ces" の形式です。アプリケーション名は "SanitizedCAShortName_ces_AuthenticationType" で構成され、AuthenticationType には次のいずれかを指定できます。
- kerberos
- usernamepassword
- certificate
メモ 同じ名前のアプリケーションが存在する場合、ErrorString プロパティに "Setup could not add this role service because it already exists in the default website. Please remove the existing role service or select a different certification authority (CA) or authentication type." が設定されます。 -
%windir%\systemdata\ces\SanitizedCAShortName_ces_AuthenticationType アプリケーション ディレクトリを作成します。 メモ 指定した名前が既にディレクトリとして存在する場合、このメソッドはエラーを返しません。ただし、指定した名前がファイルとして存在する場合やその他のエラーが発生した場合、このメソッドは失敗を示す HRESULT を返し、ErrorString プロパティに "Failed to create the directory %1." を設定します。
- %windir%\systemdata\ces\SanitizedCAShortName_ces_AuthenticationType\Traces イベント トレーシング ディレクトリを作成します。
- Web.config ファイルと Service.svc ファイルを作成し、アプリケーション ディレクトリに書き込みます。これらのファイルが既に存在する場合は上書きされます。
- IIS のアプリケーション プールを作成します。既定では、このプールは ApplicationPoolIdentity アカウントで実行されます。別の ID を使用するには、CES の役割サービスをインストールした後に手動で変更する必要があります。
- 既定の Web サイトにアプリケーションを作成します。
- ポート 443 へのセキュリティで保護されたバインド (https) を作成し、構成時に証明書ハッシュが指定されていればそれを設定します。
- 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 オブジェクトが削除されたときに CES が証明機関へ通知できるようになります。Active Directory がドメイン コントローラー上に存在する場合は、コンピューターとアプリケーション プールの両方が Deleted Objects コンテナーへのアクセスを許可されます。Active Directory がドメイン コントローラー上に存在しない場合は、コンピューターのみがアクセスを許可されます。
メモ Deleted Objects コンテナーへのアクセスに失敗した場合、このメソッドは失敗を示す HRESULT を返し、ErrorString プロパティに "Setup cannot give the Certificate Enrollment Policy Web Service account List permission on the ""Deleted Objects"" container. The web service will not be able to detect deletion of Active Directory objects such as certificate templates. To complete Setup, a member of the Domain Admins group must manually give the Certificate Enrollment Policy Web Service account List permission on the ""Deleted Objects"" container in Active Directory Domain Services (AD DS)." を設定します。
証明書登録 Web サービス (CES) を削除します。
| pCAConfig | VARIANT* | in | このパラメーターは将来使用するために予約されています。 |
| pAuthentication | VARIANT* | in | このパラメーターは将来使用するために予約されています。 |
戻り値
| 戻り値 | 説明 |
|---|---|
|
ユーザーはローカル管理者である必要があります。
ErrorString プロパティ値には "You have to be the local machine administrator in order to run this setup." が設定されます。 |
|
|
ICertificateEnrollmentServerSetup オブジェクトは初期化済みです。オブジェクトは InitializeInstallDefaults の呼び出しが成功したときに初期化されます。
ErrorString プロパティ値には "The object has been initialized. You cannot call UnInstall on an initialized object." が設定されます。 |
解説(Remarks)
CES を削除するには、このメソッドを呼び出します。ただし、既に初期化された ICertificateEnrollmentServerSetup オブジェクトに対して UnInstall メソッドを呼び出すことはできないため、UnInstall を呼び出す前に新しい ICertificateEnrollmentServerSetup を作成する必要があります。
このメソッドは、CES に関連するすべてのディレクトリとアプリケーション プールの削除を試みます。削除できない場合でも S_OK を返しますが、ErrorString プロパティを確認することで、メソッドで発生した問題を判別できます。
この関数は次の処理を実行します。
- Windows Management Instrumentation (WMI) を初期化します。
- %windir%\systemdata\ces ディレクトリと、存在する可能性のあるすべてのアプリケーション サブディレクトリの削除を試みます。詳細については、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_ICertificateEnrollmentServerSetup "{70027FDB-9DD9-4921-8944-B35CB31BD2EC}" #usecom global ICertificateEnrollmentServerSetup IID_ICertificateEnrollmentServerSetup "{}" #comfunc global ICertificateEnrollmentServerSetup_get_ErrorString 7 var #comfunc global ICertificateEnrollmentServerSetup_InitializeInstallDefaults 8 #comfunc global ICertificateEnrollmentServerSetup_GetProperty 9 int,var #comfunc global ICertificateEnrollmentServerSetup_SetProperty 10 int,var #comfunc global ICertificateEnrollmentServerSetup_SetApplicationPoolCredentials 11 wstr,wstr #comfunc global ICertificateEnrollmentServerSetup_Install 12 #comfunc global ICertificateEnrollmentServerSetup_UnInstall 13 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ICertificateEnrollmentServerSetup "{70027FDB-9DD9-4921-8944-B35CB31BD2EC}" #usecom global ICertificateEnrollmentServerSetup IID_ICertificateEnrollmentServerSetup "{}" #comfunc global ICertificateEnrollmentServerSetup_get_ErrorString 7 sptr #comfunc global ICertificateEnrollmentServerSetup_InitializeInstallDefaults 8 #comfunc global ICertificateEnrollmentServerSetup_GetProperty 9 int,sptr #comfunc global ICertificateEnrollmentServerSetup_SetProperty 10 int,sptr #comfunc global ICertificateEnrollmentServerSetup_SetApplicationPoolCredentials 11 wstr,wstr #comfunc global ICertificateEnrollmentServerSetup_Install 12 #comfunc global ICertificateEnrollmentServerSetup_UnInstall 13 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。