Функция PFXExportCertStoreEx (wincrypt.h)
Функция PFXExportCertStoreEx экспортирует сертификаты и, если они доступны, связанные с ними закрытые ключи из хранилища сертификатов, на который указывает ссылка. Эта функция заменяет старую функцию PfxExportCertStore . Его следует использовать для повышения безопасности закрытого ключа. Большой двоичный объект PFX, созданный этой функцией, защищен паролем.
Синтаксис
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
Указатель на структуру CRYPT_DATA_BLOB для хранения пакета PFX с экспортируемыми сертификатами и ключами. Если pPFX-pbData> имеет значение NULL, функция вычисляет количество байтов, необходимое для закодированного большого двоичного объекта, и возвращает его в pPFX-cbData.> При вызове функции с pPFX-pbData>, указывающей на выделенный буфер необходимого размера, функция копирует закодированные байты в буфер и обновляетpPFX-cbData> длиной байтов кодирования.
[in] szPassword
Строковый пароль, используемый для шифрования и проверки пакета PFX. Завершив использование пароля, очистите пароль из памяти, вызвав функцию SecureZeroMemory . Дополнительные сведения о защите паролей см. в разделе Обработка паролей.
[in] pvPara
Этот параметр должен иметь значение NULL , если параметр dwFlags не содержит PKCS12_PROTECT_TO_DOMAIN_SIDS или PKCS12_EXPORT_PBES2_PARAMS. Поэтому перед Windows 8 и Windows Server 2012 этот параметр должен иметь значение NULL.
Начиная с Windows 8 и Windows Server 2012, если параметр dwFlags содержит PKCS12_PROTECT_TO_DOMAIN_SIDS, можно задать для параметра pvPara значение NCRYPT_DESCRIPTOR_HANDLE, чтобы определить, к какому субъекту Active Directory будет защищен пароль PFX внутри большого двоичного объекта PFX. В настоящее время пароль можно защитить для пользователя, компьютера или группы 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 содержит внедренный пароль, который будет защищен дескриптором защиты Active Directory (AD), на который указывает параметр pvPara . Если параметр szPassword не равен NULL или пуст, указанный пароль защищен. Однако если параметр szPassword имеет значение NULL или пустую строку, создается и защищается случайный пароль из 40 символов.
PFXImportCertStore использует указанный дескриптор защиты для расшифровки внедренного пароля, заданного пользователем или случайно созданного, а затем использует пароль для расшифровки большого двоичного объекта PFX. Windows 8 и Windows Server 2012: начинается поддержка этого флага. |
|
Экспорт с помощью алгоритма шифрования на основе passowrd, заданного значением PKCS12_EXPORT_PBES2_PARAMS , переданным как pvPara.
Windows 10 1709 (Fall Creators Update) и Windows Server 2019: поддержка этого флага начинается. |
Возвращаемое значение
Возвращает значение TRUE (ненулевое), если функция выполнена успешно, и FALSE (ноль), если функция завершается сбоем. Для получения дополнительных сведений об ошибке вызовите Метод GetLastError.
Комментарии
Начиная с Windows 8 и Windows Server 2012, вы можете защитить пароль PFX для пользователя, компьютера или группы Active Directory. Если вы решили сделать это, но не создаете пароль, временный пароль будет выбран случайным образом. Пароль шифруется с помощью субъекта Active Directory, а затем внедряется в большой двоичный объект PFX. Дополнительные сведения см. в разделе параметр pvPara и флаг PKCS12_PROTECT_TO_DOMAIN_SIDS .
Начиная с Windows 10 1709 (Fall Creators Update) и Windows Server 2019, вы можете управлять количеством итераций хэш-функции по паролю, выполненной функцией PFXExportCertStoreEx, с помощью следующего раздела реестра. Значение в этом ключе имеет тип REG_DWORD.
HKEY_LOCAL_MACHINE\Программного обеспечения\Microsoft\Windows\CurrentVersion\PFX\PasswordIterationCount
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | wincrypt.h |
Библиотека | Crypt32.lib |
DLL | Crypt32.dll |