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 不要)。