PFXExportCertStoreEx 関数 (wincrypt.h)
PFXExportCertStoreEx 関数は、証明書をエクスポートし、使用可能な場合は、参照先の証明書ストアから関連する秘密キーをエクスポートします。 この関数は、以前の PfxExportCertStore 関数を置き換えます。 秘密キーのセキュリティを強化するために使用する必要があります。 この関数によって作成された PFX BLOB は、パスワードによって保護されます。
構文
BOOL PFXExportCertStoreEx(
[in] HCERTSTORE hStore,
[in, out] CRYPT_DATA_BLOB *pPFX,
[in] LPCWSTR szPassword,
[in] void *pvPara,
[in] DWORD dwFlags
);
パラメーター
[in] hStore
エクスポートする証明書を含む証明書ストアのハンドル。
[in, out] pPFX
エクスポートされた証明書とキーを含む PFX パケットを格納する CRYPT_DATA_BLOB 構造体へのポインター。 pPFX-pbData> が NULL の場合、関数はエンコードされた BLOB に必要なバイト数を計算し、pPFX-cbData> でこれを返します。 関数が、必要なサイズの割り当てられたバッファーを指す pPFX-pbData> を使用して呼び出されると、関数はエンコードされたバイトをバッファーにコピーし、pPFX-cbData> をエンコードバイト長で更新します。
[in] szPassword
PFX パケットの暗号化と検証に使用される文字列パスワード。 パスワードの使用が完了したら、 SecureZeroMemory 関数を呼び出して、メモリからパスワードをクリアします。 パスワードの保護の詳細については、「パスワードの 処理」を参照してください。
[in] pvPara
dwFlags パラメーターにPKCS12_PROTECT_TO_DOMAIN_SIDSまたはPKCS12_EXPORT_PBES2_PARAMSが含まれていない場合、このパラメーターは NULL である必要があります。 Windows 8してWindows Server 2012する前に、このパラメーターを NULL にする必要があります。
Windows 8 および Windows Server 2012 以降では、dwFlags パラメーターにPKCS12_PROTECT_TO_DOMAIN_SIDSが含まれている場合、pvPara パラメーターを設定して NCRYPT_DESCRIPTOR_HANDLE 値をポイントして、PFX パスワードが PFX BLOB 内で保護される Active Directory プリンシパルを識別できます。 現在、パスワードは Active Directory ユーザー、コンピューター、またはグループに保護できます。 保護記述子の詳細については、「 NCryptCreateProtectionDescriptor」を参照してください。
Windows 10 1709 (Fall Creators update) および Windows Server 2019 以降では、dwFlags パラメーターにPKCS12_EXPORT_PBES2_PARAMSが含まれている場合は、pvPara をPKCS12_EXPORT_PBES2_PARAMS値に設定して、使用するパスワードベースの暗号化アルゴリズムを選択する必要があります。
[in] dwFlags
フラグ値は、次の任意の組み合わせに設定できます。
値 | 意味 |
---|---|
|
秘密キーは、証明書と同様にエクスポートされます。 |
|
秘密キーが関連付けられていない証明書が検出された場合、関数は FALSE を返し、最後のエラーは CRYPT_E_NOT_FOUND または NTE_NO_KEY に設定されます。 |
|
エクスポートできない秘密キーを持つ証明書が見つかった場合、関数は FALSE を返し、最後のエラーは NTE_BAD_KEY、NTE_BAD_KEY_STATE、またはNTE_PERMに設定されます。 |
|
証明書のすべての拡張プロパティをエクスポートします。
Windows Server 2003 および Windows XP: この値はサポートされていません。 |
|
PFX BLOB には、 pvPara パラメーターによって指される Active Directory (AD) 保護記述子に対して保護される埋め込みパスワードが含まれています。 szPassword パラメーターが NULL または空でない場合は、指定されたパスワードが保護されます。 ただし、 szPassword パラメーターが NULL または空の文字列の場合は、ランダムな 40 文字のパスワードが作成され、保護されます。
PFXImportCertStore は、指定された保護記述子を使用して、ユーザーによって指定されているかランダムに生成されたかに関係なく、埋め込みパスワードの暗号化を解除し、そのパスワードを使用して PFX BLOB の暗号化を解除します。 Windows 8とWindows Server 2012: このフラグのサポートが開始されます。 |
|
pvPara として渡されるPKCS12_EXPORT_PBES2_PARAMS値で指定された passowrd ベースの暗号化アルゴリズムを使用してエクスポートします。
Windows 10 1709 (Fall Creators update) と Windows Server 2019: このフラグのサポートが開始されます。 |
戻り値
関数が成功した場合は TRUE (0 以外)、関数が失敗した場合は FALSE (ゼロ) を返します。 拡張エラー情報については、 GetLastError を呼び出します。
注釈
Windows 8とWindows Server 2012以降では、Active Directory ユーザー、コンピューター、またはグループに PFX パスワードを保護できます。 パスワードを作成しない場合は、一時パスワードがランダムに選択されます。 パスワードは Active Directory プリンシパルを使用して暗号化され、PFX BLOB に埋め込まれます。 詳細については、 pvPara パラメーターと PKCS12_PROTECT_TO_DOMAIN_SIDS フラグに関するページを参照してください。
Windows 10 1709 (Fall Creators update) および Windows Server 2019 以降では、次のレジストリ キーを使用して、PFXExportCertStoreEx 関数によって実行されるパスワードに対するハッシュ関数の反復回数を制御できます。 このキーの値は REG_DWORD 型です。
Hkey_local_machine\ソフトウェア\マイクロソフト\Windows\CurrentVersion\Pfx\PasswordIterationCount
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | wincrypt.h |
Library | Crypt32.lib |
[DLL] | Crypt32.dll |