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が含まれている場合は、pvParaPKCS12_EXPORT_PBES2_PARAMS値に設定して、使用するパスワードベースの暗号化アルゴリズムを選択する必要があります。

[in] dwFlags

フラグ値は、次の任意の組み合わせに設定できます。

意味
EXPORT_PRIVATE_KEYS
0x0004
秘密キーは、証明書と同様にエクスポートされます。
REPORT_NO_PRIVATE_KEY
0x0001
秘密キーが関連付けられていない証明書が検出された場合、関数は FALSE を返し、最後のエラーは CRYPT_E_NOT_FOUND または NTE_NO_KEY に設定されます。
REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY
0x0002
エクスポートできない秘密キーを持つ証明書が見つかった場合、関数は FALSE を返し、最後のエラーは NTE_BAD_KEY、NTE_BAD_KEY_STATE、またはNTE_PERMに設定されます。
PKCS12_INCLUDE_EXTENDED_PROPERTIES
0x0010
証明書のすべての拡張プロパティをエクスポートします。

Windows Server 2003 および Windows XP: この値はサポートされていません。

PKCS12_PROTECT_TO_DOMAIN_SIDS
0x0020
PFX BLOB には、 pvPara パラメーターによって指される Active Directory (AD) 保護記述子に対して保護される埋め込みパスワードが含まれています。 szPassword パラメーターが NULL または空でない場合は、指定されたパスワードが保護されます。 ただし、 szPassword パラメーターが NULL または空の文字列の場合は、ランダムな 40 文字のパスワードが作成され、保護されます。

PFXImportCertStore は、指定された保護記述子を使用して、ユーザーによって指定されているかランダムに生成されたかに関係なく、埋め込みパスワードの暗号化を解除し、そのパスワードを使用して PFX BLOB の暗号化を解除します。

Windows 8とWindows Server 2012: このフラグのサポートが開始されます。

PKCS12_EXPORT_PBES2_PARAMS
0x0080
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

こちらもご覧ください

PFXExportCertStore

PFXImportCertStore