Win32 API 日本語リファレンス
ホームSecurity.Cryptography.Certificates › IX509Enrollment2

IX509Enrollment2

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID728ab350-217d-11da-b2a4-000e7bbb2b09継承元IX509Enrollment呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl30

公式ドキュメント

IX509Enrollment2 インターフェイスを使用すると、証明書階層への登録(エンロール)と証明書応答のインストールを行うことができます。

メソッド 5

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 30 HRESULT InitializeFromTemplate(X509CertificateEnrollmentContext context, IX509EnrollmentPolicyServer* pPolicyServer, IX509CertificateTemplate* pTemplate)

テンプレートを使用して登録(エンロール)オブジェクトを初期化します。

contextX509CertificateEnrollmentContextin

An X509CertificateEnrollmentContext 列挙値です。要求された登録(エンロール)がユーザー向けか、コンピューター向けか、またはコンピューターに代わって操作する管理者向けかを示します。次のいずれかの値を指定できます。

意味
ContextUser
証明書がエンドユーザー向けに要求されています。
ContextMachine
証明書がコンピューター向けに要求されています。
ContextAdministratorForceMachine
証明書が、コンピューターに代わって操作する管理者によって要求されています。
pPolicyServerIX509EnrollmentPolicyServer*inoptionalpTemplate パラメーターで指定されたテンプレートを含む証明書登録ポリシー(CEP)サーバーを表す IX509EnrollmentPolicyServer オブジェクトへのポインターです。
pTemplateIX509CertificateTemplate*inoptional初期化時に使用するテンプレートを表す IX509CertificateTemplate オブジェクトへのポインターです。

戻り値

関数が成功した場合、関数は S_OK を返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード/値 説明
E_POINTER
pPolicyServer パラメーターと pTemplate パラメーターに NULL を指定することはできません。
HRESULT_FROM_WIN32(ERROR_ALREADY_INITIALIZED)
登録(エンロール)オブジェクトは既に初期化されています。

解説(Remarks)

InitializeFromTemplate メソッドは、次の処理を行います。

vtbl 31 HRESULT InstallResponse2(InstallResponseRestrictionFlags Restrictions, LPWSTR strResponse, EncodingType Encoding, LPWSTR strPassword, LPWSTR strEnrollmentPolicyServerUrl, LPWSTR strEnrollmentPolicyServerID, PolicyServerUrlFlags EnrollmentPolicyServerFlags, X509EnrollmentAuthFlags authFlags)

エンドエンティティ コンピューターに証明書チェーンをインストールします。(IX509Enrollment2.InstallResponse2)

RestrictionsInstallResponseRestrictionFlagsin

インストールできる証明書の種類を指定する InstallResponseRestrictionFlags 列挙値です。次の値の 1 つ以上を指定できます。

意味
AllowNone
信頼されていない証明書、または対応する要求が存在しない証明書をインストールしません。
AllowNoOutstandingRequest
ダミー証明書からではなく、証明書応答から 秘密キー を作成します。これにより、ダミー証明書は省略可能になります。この値が設定されていない場合、ダミー証明書が存在している必要があり、そこから秘密キーが抽出されます。
AllowUntrustedCertificate
信頼されていないエンドエンティティ証明書および 証明機関 証明書をインストールします。証明機関証明書には、ルート CA 証明書と下位 CA 証明書が含まれます。エンドエンティティ証明書は個人ストアにインストールされ、CA 証明書は証明機関ストアにインストールされます。
AllowUntrustedRoot
AllowUntrustedCertificate フラグと同じ動作を行いますが、ルートが信頼されていないために証明書チェーンを構築できない場合でも証明書をインストールします。
注意 Windows Vista では、このフラグの動作は AllowUntrustedCertificate フラグに定義された動作と同じです。信頼されていないルートは、Windows Vista with SP1 以降でインストールできます。
strResponseLPWSTRinDER エンコードされた応答を含む BSTR 変数です。
EncodingEncodingTypeinDER エンコードされた応答を含む文字列に適用されるエンコードの種類を指定する EncodingType 列挙値です。
strPasswordLPWSTRin証明書のインストールに使用する省略可能なパスワードです。パスワードを使用しないことを示すために NULL を指定できます。パスワードの使用が終わったら、SecureZeroMemory 関数を呼び出してメモリからクリアしてください。パスワードの保護の詳細については、Handling Passwords を参照してください。
strEnrollmentPolicyServerUrlLPWSTRin証明書登録ポリシー(CEP)サーバーの URL を含む BSTR です。
strEnrollmentPolicyServerIDLPWSTRinCEP サーバーの識別子を含む BSTR です。
EnrollmentPolicyServerFlagsPolicyServerUrlFlagsin

PolicyServerUrlFlags 列挙値です。次のいずれかの値を指定できます。

意味
PsfLocationGroupPolicy
CEP サーバーの URL は、管理者によってグループ ポリシーで指定されます。
PsfLocationRegistry
CEP サーバーの URL は、レジストリで指定されます。
PsfUseClientId
証明書の登録(エンロール)と更新において、ClientId 属性にクライアント固有のデータを含めることを指定します。例としては、暗号化サービス プロバイダーの名前、Windows のバージョン番号、ユーザー名、コンピューターの DNS 名、ドメイン コントローラーの DNS 名などがあります。このフラグはグループ ポリシーで設定できます。

このフラグは、ユーザーが属するフォレストを管理する管理者以外の管理者が管理するサーバーへの登録(エンロール)時に生じ得るプライバシー上の懸念に対処するために用意されています。このフラグを設定しないことで、ローカル以外の管理者への個人情報の送信を防止できます。

PsfAutoEnrollmentEnabled
証明書の自動登録(エンロール)が有効になっています。
PsfAllowUnTrustedCA
CA によって署名された証明書をインストールするために、発行元 CA の証明書がクライアントによって信頼されている必要がないことを指定します。
authFlagsX509EnrollmentAuthFlagsin

クライアント認証の種類を指定する X509EnrollmentAuthFlags 列挙値です。Windows 7 では、次の値のうち X509AuthCertificate のみを選択できます。

意味
X509AuthAnonymous
匿名認証。
X509AuthKerberos
Kerberos 認証。
X509AuthUsername
クリア テキストのユーザー名とパスワードによる認証。
注意 ユーザー名とパスワードは送信前に暗号化され、CEP サーバー上の資格情報コンテナーに安全に保存されます。
X509AuthCertificate
ローカル コンピューターにインストールされ、サーバーがクライアントの ID を検証するために使用するクライアント認証証明書。

戻り値

関数が成功した場合、関数は S_OK を返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。一般的なエラーコードの一覧については、Common HRESULT Values を参照してください。

リターンコード 説明
E_ACCESSDENIED
このメソッドが Web から呼び出され、かつ Restrictions パラメーターに AllowNoOutstandingRequest または AllowUntrustedCertificate が指定されました。
HRESULT_FROM_WIN32(ERROR_ARITHMETIC_OVERFLOW
パスワードを含む文字列の長さが 64 キロバイトを超えています。
OLE_E_BLANK
登録(エンロール)オブジェクトが初期化されていません。

解説(Remarks)

InstallResponse2 メソッドは、次の処理を行います。

  1. 外部ストアからダミー証明書を取得します。
  2. 応答に含まれる証明書を取得し、コンピューターにインストールします。
  3. 外部ストア内のダミー証明書から、個人ストアに新しくインストールされた証明書へプロパティをコピーします。

InstallResponse2 メソッドを呼び出す前に、次のいずれかのメソッドを呼び出して IX509Enrollment オブジェクトを初期化する必要があります。

Web からこのメソッドを呼び出す場合、Restrictions パラメーターに指定できるのは AllowNone または AllowUntrustedRoot のみです。AllowNoOutstandingRequest または AllowUntrustedCertificate を指定した場合、メソッドは E_ACCESSDENIED エラーを返します。

最後の 4 つのパラメーター(strEnrollmentPolicyServerUrlstrEnrollmentPolicyServerIDEnrollmentPolicyServerFlagsauthFlags)は、InstallResponse メソッドには含まれていません。これらのパラメーターを使用すると、ICertPropertyEnrollmentPolicyServer インターフェイスとほぼ同じ方法で、インストールされた証明書にプロパティ値を追加できます。

vtbl 32 HRESULT get_PolicyServer(IX509EnrollmentPolicyServer** ppPolicyServer)

初期化時に使用したテンプレートを含む証明書登録ポリシー(CEP)サーバーを取得します。(IX509Enrollment2.get_PolicyServer)

ppPolicyServerIX509EnrollmentPolicyServer**outこの登録に関連付けられた IX509EnrollmentPolicyServer オブジェクトを受け取るポインタである。
vtbl 33 HRESULT get_Template(IX509CertificateTemplate** ppTemplate)

初期化時に使用した証明書要求テンプレートを取得します。(IX509Enrollment2.get_Template)

ppTemplateIX509CertificateTemplate**outこの登録に関連付けられた IX509CertificateTemplate オブジェクトを受け取るポインタである。
vtbl 34 HRESULT get_RequestIdString(LPWSTR* pValue)

証明書登録サーバー(CES)に送信された証明書要求の一意の識別子を含む文字列を取得します。

pValueLPWSTR*outCA 上での要求 ID を文字列として受け取るポインタである。

解説(Remarks)

RequestIdString プロパティの値は、登録(エンロール)処理の過程で設定されます。この値は、クライアントと CES との間の後続の通信で使用できます。たとえば、CES が最初の送信時に要求を保留中としてマークした場合、クライアントは再び CES に接続して証明書応答を取得しようとする際に、この要求 ID 文字列を使用できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IX509Enrollment2 "{728AB350-217D-11DA-B2A4-000E7BBB2B09}"
#usecom global IX509Enrollment2 IID_IX509Enrollment2 "{}"
#comfunc global IX509Enrollment2_InitializeFromTemplate  30 int,sptr,sptr
#comfunc global IX509Enrollment2_InstallResponse2        31 int,wstr,int,wstr,wstr,wstr,int,int
#comfunc global IX509Enrollment2_get_PolicyServer        32 sptr
#comfunc global IX509Enrollment2_get_Template            33 sptr
#comfunc global IX509Enrollment2_get_RequestIdString     34 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。