Función PFXExportCertStoreEx (wincrypt.h)

La función PFXExportCertStoreEx exporta los certificados y, si está disponible, sus claves privadas asociadas desde el almacén de certificados al que se hace referencia. Esta función reemplaza a la función PfxExportCertStore anterior. Se debe usar para su seguridad mejorada de clave privada. El BLOB PFX creado por esta función está protegido por una contraseña.

Sintaxis

BOOL PFXExportCertStoreEx(
  [in]      HCERTSTORE      hStore,
  [in, out] CRYPT_DATA_BLOB *pPFX,
  [in]      LPCWSTR         szPassword,
  [in]      void            *pvPara,
  [in]      DWORD           dwFlags
);

Parámetros

[in] hStore

Identificador del almacén de certificados que contiene los certificados que se van a exportar.

[in, out] pPFX

Puntero a una estructura de CRYPT_DATA_BLOB que contiene el paquete PFX con los certificados y claves exportados. Si pPFX-pbData> es NULL, la función calcula el número de bytes necesarios para el BLOB codificado y lo devuelve en pPFX-cbData.> Cuando se llama a la función con pPFX-pbData> que apunta a un búfer asignado del tamaño necesario, la función copia los bytes codificados en el búfer y actualizapPFX-cbData> con la longitud de bytes de codificación.

[in] szPassword

Contraseña de cadena usada para cifrar y comprobar el paquete PFX. Cuando haya terminado de usar la contraseña, desactive la contraseña de la memoria llamando a la función SecureZeroMemory . Para obtener más información sobre cómo proteger las contraseñas, consulte Control de contraseñas.

[in] pvPara

Este parámetro debe ser NULL si el parámetro dwFlags no contiene PKCS12_PROTECT_TO_DOMAIN_SIDS o PKCS12_EXPORT_PBES2_PARAMS. Antes de Windows 8 y Windows Server 2012, por lo tanto, este parámetro debe ser NULL.

A partir de Windows 8 y Windows Server 2012, si el parámetro dwFlags contiene PKCS12_PROTECT_TO_DOMAIN_SIDS, puede establecer el parámetro pvPara para que apunte a un valor de NCRYPT_DESCRIPTOR_HANDLE para identificar a qué entidad de seguridad de Active Directory se protegerá la contraseña PFX dentro del BLOB PFX. Actualmente, la contraseña se puede proteger a un usuario, equipo o grupo de Active Directory. Para obtener más información sobre los descriptores de protección, vea NCryptCreateProtectionDescriptor.

A partir de Windows 10 1709 (Fall Creators update) y Windows Server 2019, si el parámetro dwFlags contiene PKCS12_EXPORT_PBES2_PARAMS, debe establecer el pvPara en un valor de PKCS12_EXPORT_PBES2_PARAMS para seleccionar el algoritmo de cifrado basado en contraseña que se va a usar.

[in] dwFlags

Los valores de marca se pueden establecer en cualquier combinación de lo siguiente.

Valor Significado
EXPORT_PRIVATE_KEYS
0x0004
Las claves privadas se exportan, así como los certificados.
REPORT_NO_PRIVATE_KEY
0x0001
Si se encuentra un certificado que no tiene ninguna clave privada asociada, la función devuelve FALSE con el último error establecido en CRYPT_E_NOT_FOUND o NTE_NO_KEY.
REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY
0x0002
Si se encuentra un certificado que tiene una clave privada no exportable, la función devuelve FALSE y el último error establecido en NTE_BAD_KEY, NTE_BAD_KEY_STATE o NTE_PERM.
PKCS12_INCLUDE_EXTENDED_PROPERTIES
0x0010
Exporte todas las propiedades extendidas en el certificado.

Windows Server 2003 y Windows XP: Este valor no se admite.

PKCS12_PROTECT_TO_DOMAIN_SIDS
0x0020
El BLOB PFX contiene una contraseña incrustada que se protegerá en el descriptor de protección de Active Directory (AD) al que apunta el parámetro pvPara . Si el parámetro szPassword no es NULL o está vacío, la contraseña especificada está protegida. Sin embargo, si el parámetro szPassword es NULL o una cadena vacía, se crea y protege una contraseña aleatoria de cuarenta (40) caracteres.

PFXImportCertStore usa el descriptor de protección especificado para descifrar la contraseña insertada, ya sea especificada por el usuario o generada aleatoriamente y, a continuación, usa la contraseña para descifrar el BLOB PFX.

Windows 8 y Windows Server 2012: comienza la compatibilidad con esta marca.

PKCS12_EXPORT_PBES2_PARAMS
0x0080
Exporte mediante el algoritmo de cifrado basado en passowrd especificado por el valor de PKCS12_EXPORT_PBES2_PARAMS pasado como pvPara.

Windows 10 1709 (Fall Creators Update) y Windows Server 2019: comienza la compatibilidad con esta marca.

Valor devuelto

Devuelve TRUE (distinto de cero) si la función se ejecuta correctamente y FALSE (cero) si se produce un error en la función. Para obtener información de error extendida, llame a GetLastError.

Comentarios

A partir de Windows 8 y Windows Server 2012, puede proteger la contraseña PFX en un usuario, equipo o grupo de Active Directory. Si decide hacerlo, pero no cree una contraseña, se seleccionará aleatoriamente una contraseña temporal. La contraseña se cifra mediante la entidad de seguridad de Active Directory y, a continuación, se inserta en el BLOB PFX. Para obtener más información, consulte el parámetro pvPara y la marca PKCS12_PROTECT_TO_DOMAIN_SIDS .

A partir de Windows 10 1709 (Fall Creators update) y Windows Server 2019, puede controlar el número de iteraciones de la función hash a través de la contraseña realizada por la función PFXExportCertStoreEx mediante la siguiente clave del Registro. El valor de esta clave es de tipo REG_DWORD.

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Currentversion\PFX\PasswordIterationCount

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado wincrypt.h
Library Crypt32.lib
Archivo DLL Crypt32.dll

Consulte también

PFXExportCertStore

PFXImportCertStore