IOCSPAdmin
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
Online Certificate Status Protocol (OCSP) レスポンダー サーバーを管理するための機能を提供します。
解説(Remarks)
Microsoft OCSP アーキテクチャで使用されるさまざまなプロパティの違いを次の表に示します。
| アーキテクチャ | スコープ | 情報の種類 |
|---|---|---|
| OCSPServiceProperties | すべての CA に対するレスポンダー サービス全般の動作を制御します。 |
|
| OCSPCAConfigurationCollection | 特定の CA に対する応答動作を制御します。 |
|
| ProviderProperties | 特定の OCSPCAConfiguration に固有の失効情報プロバイダーの動作を制御します。 |
|
メソッド 10
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
OCSPPropertyCollection オブジェクトのインスタンスを取得します。このオブジェクトは、Online Certificate Status Protocol (OCSP) レスポンダー サービスの属性を表します。
| ppVal | IOCSPPropertyCollection** | out | OCSP レスポンダーサービスのプロパティコレクションを受け取るインターフェイスポインタへのポインタである。 |
解説(Remarks)
OCSP サービス プロパティで指定できる Name と Value のペアを次の表に示します。
| Name | Value |
|---|---|
| LogLevel | LogLevel の Value には、次の定数のいずれかを指定する必要があります。 |
| AuditFilter | AuditFilter の Value には、次の DWORD 値をビットごとに組み合わせた任意の値を指定できます。 |
| ArrayController | ArrayController の Value には、OCSP 配列構成のアレイ コントローラーとして機能する OCSP サーバーのコンピューター名を表す文字列を指定する必要があります。 |
| ArrayMembers | ArrayMembers の Value には、OCSP 配列構成に含まれる OCSP サーバーのコンピューター名を表す複数行の文字列を指定できます。 |
| EnrollPollInterval | EnrollPollInterval の Value には、OCSP サービス証明書の登録試行の間隔を時間数で表す 0 から 24 までの DWORD 値を指定する必要があります。この間隔によって、テンプレートの変更や保留中の有効期間の変更について、サービスが対象の証明書の状態を確認する頻度が決まります。サービスは変更を検出すると、新しい証明書の登録を試みます。 |
OCSPCAConfigurationCollection オブジェクトのインスタンスを取得します。このオブジェクトは、Online Certificate Status Protocol (OCSP) レスポンダー サービスが状態要求を処理できる証明機関 (CA) 証明書のセットを表します。
| pVal | IOCSPCAConfigurationCollection** | out | OCSP の CA 構成コレクションを受け取るインターフェイスポインタへのポインタである。 |
Online Certificate Status Protocol (OCSP) レスポンダー サーバーに接続し、サーバーから取得した構成情報で OCSPAdmin オブジェクトを初期化します。
| bstrServerName | LPWSTR | in | レスポンダー サーバー名を含む文字列です。 | ||||
| bForce | VARIANT_BOOL | in |
|
戻り値
VB
メソッドが成功した場合は S_OK を返します。メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラー コードの一覧については、Common HRESULT Values を参照してください。
メソッドが HRESULT_FROM_WIN32(ERROR_INVALID_STATE) を返した場合は、構成が既に初期化されています。
メソッドが E_INVALIDARG を返した場合は、pVal パラメーターに NULL が設定されていました。
解説(Remarks)
メソッド呼び出しに対する bForce パラメーター値の影響を次の表に示します。
| 対象サーバー上の OCSP レスポンダー サービス | bForce が VARIANT_TRUE の場合 | bForce が VARIANT_FALSE の場合 |
|---|---|---|
| 実行中 | サービスから構成を取得します。 | サービスから構成を取得します。 |
| 停止中 | サーバーのレジストリから構成の取得を試みます。この試行が失敗した場合はエラーを返します。 | エラーを返します。 |
メソッド呼び出しに対する bForce パラメーター値の影響を次の表に示します。
| 対象サーバー上の OCSP レスポンダー サービス | bForce が True の場合 | bForce が False の場合 |
|---|---|---|
| 実行中 | サービスから構成を取得します。 | サービスから構成を取得します。 |
| 停止中 | サーバーのレジストリから構成の取得を試みます。この試行が失敗した場合はエラーを返します。 | エラーを返します。 |
このメソッドは、実行中の OCSP レスポンダー サービスのインスタンスから構成を読み取ろうとしますが、サービスが実行されていない場合やアクセスできない状態にある場合は読み取れないことがあります。呼び出し元は、実行中のインスタンスが見つからない場合にサーバーのレジストリから構成を読み取るよう、メソッドに指示できます。
特定の OCSPAdmin オブジェクトに対してこのメソッドを 2 回以上呼び出すと失敗します。OCSPAdmin の各インスタンスは 1 つのレスポンダー サーバーに対応します。OCSP レスポンダー サーバーの配列内の別のサーバーに接続するには、OCSPAdmin オブジェクトの新しいインスタンスを作成してください。
構成の変更内容をレスポンダー サービスに反映します。
| bstrServerName | LPWSTR | in | レスポンダー サービス名を含む文字列です。 | ||||
| bForce | VARIANT_BOOL | in |
|
戻り値
VB
メソッドが成功した場合は S_OK を返します。メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラー コードの一覧については、Common HRESULT Values を参照してください。
解説(Remarks)
メソッド呼び出しに対する bForce パラメーター値の影響を次の表に示します。
| 対象サーバー上の OCSP レスポンダー サービス | bForce が VARIANT_TRUE の場合 | bForce が VARIANT_FALSE の場合 |
|---|---|---|
| 実行中 | サービスから構成を取得します。 | サービスから構成を取得します。 |
| 停止中 | サーバーのレジストリから構成の取得を試みます。この試行が失敗した場合はエラーを返します。 | エラーを返します。 |
メソッド呼び出しに対する bForce パラメーター値の影響を次の表に示します。
| 対象サーバー上の OCSP レスポンダー サービス | bForce が True の場合 | bForce が False の場合 |
|---|---|---|
| 実行中 | サービスから構成を取得します。 | サービスから構成を取得します。 |
| 停止中 | サーバーのレジストリから構成の取得を試みます。この試行が失敗した場合はエラーを返します。 | エラーを返します。 |
特定の Online Certificate Status Protocol (OCSP) レスポンダー サーバー上で、ユーザーが持つ特権ロールのアクセス マスクを取得します。
| bstrServerName | LPWSTR | in | レスポンダー サーバー名を含む文字列です。 |
| pRoles | INT* | out | 32 ビットのアクセス マスクへのポインターです。 |
戻り値
C++
メソッドが成功した場合は S_OK を返します。メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラー コードの一覧については、Common HRESULT Values を参照してください。
VB
32 ビットのアクセス マスク。解説(Remarks)
OCSP レスポンダー サーバーは、アクセス特権ロールに対して次のマスクを定義します。
| 定数 | C++ の値 | VB Script の値 | 説明 |
|---|---|---|---|
| CA_ACCESS_ADMIN | 0x001 | &H1 | CA 管理者 |
| CA_ACCESS_READ | 0x100 | &H100 | CA への読み取り専用アクセス |
| CA_ACCESS_ENROLL | 0x200 | &H200 | CA への登録アクセス |
マスクに応じてユーザーが持つ可能性のある特権の例を次に示します。
- OCSP サーバーの構成とアップグレード。
- 既存の署名証明書とキーの割り当て。
- 証明書失効リスト (CRL) のインストールと更新。
- 応答形式の構成。
Online Certificate Status Protocol (OCSP) レスポンダー サービスとの DCOM 接続をテストします。
| bstrServerName | LPWSTR | in | OCSP レスポンダー サーバー名を含む文字列です。 |
Online Certificate Status Protocol (OCSP) レスポンダー サーバーのセキュリティ記述子情報を更新します。
| bstrServerName | LPWSTR | in | レスポンダー サーバー名を含む文字列です。 |
| bstrVal | LPWSTR | in | レスポンダー サーバーに割り当てるセキュリティ記述子情報を含む文字列です。 |
解説(Remarks)
このメソッドは ConvertStringSecurityDescriptorToSecurityDescriptor 関数を呼び出して、Security Descriptor String Format の文字列からセキュリティ記述子を作成します。
Online Certificate Status Protocol (OCSP) レスポンダー サーバーのセキュリティ記述子情報を取得します。
| bstrServerName | LPWSTR | in | レスポンダー サーバー名を含む文字列です。 |
| pVal | LPWSTR* | out | セキュリティ記述子 (SDDL 形式) を受け取る文字列ポインタである。 |
戻り値
C++
メソッドが成功した場合は S_OK を返します。メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラー コードの一覧については、Common HRESULT Values を参照してください。
VB
セキュリティ記述子情報。解説(Remarks)
このメソッドは ConvertSecurityDescriptorToStringSecurityDescriptor 関数を呼び出して、Security Descriptor String Format の文字列値を作成します。
特定の証明機関 (CA) 証明書に対して、レスポンダー サーバー上で利用できる署名証明書を取得します。
| bstrServerName | LPWSTR | in | レスポンダー サーバー名を含む文字列です。 |
| pCACertVar | VARIANT* | in | 署名証明書を取得する対象の CA 証明書です。 |
| pVal | VARIANT* | out | 署名に利用可能な証明書群を受け取る VARIANT へのポインタである。 |
戻り値
C++
メソッドが成功した場合は S_OK を返します。メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラー コードの一覧については、Common HRESULT Values を参照してください。
VB
利用できる署名証明書。解説(Remarks)
各署名証明書は次の特性を備えています。
- pCACertVar パラメーターで指定された CA によって署名されている
- Online Certificate Status Protocol (OCSP) 署名 (XCN_OID_PKIX_KP_OCSP_SIGNING) 拡張機能を含む
- 有効期限が切れていない
- レスポンダー サーバーが証明書の秘密キーにアクセスできる
ハッシュ アルゴリズム名の一覧を取得します。Online Certificate Status Protocol (OCSP) レスポンダー サーバーは、これらの名前を使用して、特定の証明機関 (CA) 構成に対する OCSP 応答に署名します。
| bstrServerName | LPWSTR | in | レスポンダー サーバー名を含む文字列です。 |
| bstrCAId | LPWSTR | in | OCSPCAConfiguration の Identifier を含む文字列です。 |
| pVal | VARIANT* | out | レスポンダー サーバーが応答の署名に使用できるハッシュ アルゴリズムの一覧です。 |
戻り値
C++
メソッドが成功した場合は S_OK を返します。メソッドが失敗した場合は、エラーを示す HRESULT 値を返します。一般的なエラー コードの一覧については、Common HRESULT Values を参照してください。
VB
レスポンダー サーバーが応答の署名に使用できるハッシュ アルゴリズムの一覧。Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IOCSPAdmin "{322E830D-67DB-4FE9-9577-4596D9F09294}" #usecom global IOCSPAdmin IID_IOCSPAdmin "{D3F73511-92C9-47CB-8FF2-8D891A7C4DE4}" #comfunc global IOCSPAdmin_get_OCSPServiceProperties 7 sptr #comfunc global IOCSPAdmin_get_OCSPCAConfigurationCollection 8 sptr #comfunc global IOCSPAdmin_GetConfiguration 9 wstr,int #comfunc global IOCSPAdmin_SetConfiguration 10 wstr,int #comfunc global IOCSPAdmin_GetMyRoles 11 wstr,var #comfunc global IOCSPAdmin_Ping 12 wstr #comfunc global IOCSPAdmin_SetSecurity 13 wstr,wstr #comfunc global IOCSPAdmin_GetSecurity 14 wstr,var #comfunc global IOCSPAdmin_GetSigningCertificates 15 wstr,var,var #comfunc global IOCSPAdmin_GetHashAlgorithms 16 wstr,wstr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IOCSPAdmin "{322E830D-67DB-4FE9-9577-4596D9F09294}" #usecom global IOCSPAdmin IID_IOCSPAdmin "{D3F73511-92C9-47CB-8FF2-8D891A7C4DE4}" #comfunc global IOCSPAdmin_get_OCSPServiceProperties 7 sptr #comfunc global IOCSPAdmin_get_OCSPCAConfigurationCollection 8 sptr #comfunc global IOCSPAdmin_GetConfiguration 9 wstr,int #comfunc global IOCSPAdmin_SetConfiguration 10 wstr,int #comfunc global IOCSPAdmin_GetMyRoles 11 wstr,sptr #comfunc global IOCSPAdmin_Ping 12 wstr #comfunc global IOCSPAdmin_SetSecurity 13 wstr,wstr #comfunc global IOCSPAdmin_GetSecurity 14 wstr,sptr #comfunc global IOCSPAdmin_GetSigningCertificates 15 wstr,sptr,sptr #comfunc global IOCSPAdmin_GetHashAlgorithms 16 wstr,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。