Partager via


PFXExportCertStoreEx, fonction (wincrypt.h)

La fonction PFXExportCertStoreEx exporte les certificats et, le cas échéant, leurs clés privées associées à partir du magasin de certificats référencé. Cette fonction remplace l’ancienne fonction PfxExportCertStore . Il doit être utilisé pour sa sécurité de clé privée renforcée. L’objet BLOB PFX créé par cette fonction est protégé par un mot de passe.

Syntaxe

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

Paramètres

[in] hStore

Handle du magasin de certificats contenant les certificats à exporter.

[in, out] pPFX

Pointeur vers une structure de CRYPT_DATA_BLOB contenant le paquet PFX avec les certificats et clés exportés. Si pPFX-pbData> a la valeur NULL, la fonction calcule le nombre d’octets nécessaires pour l’objet BLOB encodé et retourne cette valeur dans pPFX-cbData>. Lorsque la fonction est appelée avec pPFX-pbData> pointant vers une mémoire tampon allouée de la taille nécessaire, la fonction copie les octets codés dans la mémoire tampon et met à jourpPFX-cbData> avec la longueur d’octet encodée.

[in] szPassword

Mot de passe de chaîne utilisé pour chiffrer et vérifier le paquet PFX. Lorsque vous avez terminé d’utiliser le mot de passe, effacez le mot de passe de la mémoire en appelant la fonction SecureZeroMemory . Pour plus d’informations sur la protection des mots de passe, consultez Gestion des mots de passe.

[in] pvPara

Ce paramètre doit avoir la valeur NULL si le paramètre dwFlags ne contient pas PKCS12_PROTECT_TO_DOMAIN_SIDS ou PKCS12_EXPORT_PBES2_PARAMS. Avant Windows 8 et Windows Server 2012, ce paramètre doit donc être NULL.

À compter de Windows 8 et Windows Server 2012, si le paramètre dwFlags contient PKCS12_PROTECT_TO_DOMAIN_SIDS, vous pouvez définir le paramètre pvPara pour qu’il pointe vers une valeur NCRYPT_DESCRIPTOR_HANDLE pour identifier le principal Active Directory vers lequel le mot de passe PFX sera protégé à l’intérieur de l’objet BLOB PFX. Actuellement, le mot de passe peut être protégé pour un utilisateur, un ordinateur ou un groupe Active Directory. Pour plus d’informations sur les descripteurs de protection, consultez NCryptCreateProtectionDescriptor.

À compter de Windows 10 1709 (fall Creators update) et Windows Server 2019, si le paramètre dwFlags contient PKCS12_EXPORT_PBES2_PARAMS, vous devez définir le pvPara sur une valeur PKCS12_EXPORT_PBES2_PARAMS pour sélectionner l’algorithme de chiffrement basé sur un mot de passe à utiliser.

[in] dwFlags

Les valeurs d’indicateur peuvent être définies sur n’importe quelle combinaison des éléments suivants.

Valeur Signification
EXPORT_PRIVATE_KEYS
0x0004
Les clés privées sont exportées, ainsi que les certificats.
REPORT_NO_PRIVATE_KEY
0x0001
Si vous rencontrez un certificat qui n’a pas de clé privée associée, la fonction retourne FALSE avec la dernière erreur définie sur CRYPT_E_NOT_FOUND ou NTE_NO_KEY.
REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY
0x0002
Si un certificat qui a une clé privée non exportable est rencontré, la fonction retourne FALSE et la dernière erreur définie sur NTE_BAD_KEY, NTE_BAD_KEY_STATE ou NTE_PERM.
PKCS12_INCLUDE_EXTENDED_PROPERTIES
0x0010
Exportez toutes les propriétés étendues sur le certificat.

Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge.

PKCS12_PROTECT_TO_DOMAIN_SIDS
0x0020
L’objet BLOB PFX contient un mot de passe incorporé qui sera protégé par le descripteur de protection Active Directory (AD) vers lequel pointe le paramètre pvPara . Si le paramètre szPassword n’est pas NULL ou vide, le mot de passe spécifié est protégé. Toutefois, si le paramètre szPassword a la valeur NULL ou une chaîne vide, un mot de passe aléatoire de quarante (40) caractères est créé et protégé.

PFXImportCertStore utilise le descripteur de protection spécifié pour déchiffrer le mot de passe incorporé, qu’il soit spécifié par l’utilisateur ou généré de manière aléatoire, puis utilise le mot de passe pour déchiffrer l’objet BLOB PFX.

Windows 8 et Windows Server 2012 : la prise en charge de cet indicateur commence.

PKCS12_EXPORT_PBES2_PARAMS
0x0080
Exportez à l’aide de l’algorithme de chiffrement basé sur passowrd spécifié par la valeur PKCS12_EXPORT_PBES2_PARAMS passée en tant que pvPara.

Windows 10 1709 (fall Creators update) et Windows Server 2019 : la prise en charge de cet indicateur commence.

Valeur retournée

Retourne TRUE (différent de zéro) si la fonction réussit, et FALSE (zéro) si la fonction échoue. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

À compter de Windows 8 et Windows Server 2012, vous pouvez protéger le mot de passe PFX pour un utilisateur, un ordinateur ou un groupe Active Directory. Si vous choisissez de le faire, mais que vous ne créez pas de mot de passe, un mot de passe temporaire sera sélectionné de manière aléatoire. Le mot de passe est chiffré à l’aide du principal Active Directory, puis incorporé dans l’objet BLOB PFX. Pour plus d’informations, consultez le paramètre pvPara et l’indicateur PKCS12_PROTECT_TO_DOMAIN_SIDS .

À compter de Windows 10 1709 (fall Creators update) et Windows Server 2019, vous pouvez contrôler le nombre d’itérations de la fonction de hachage sur le mot de passe effectué par la fonction PFXExportCertStoreEx à l’aide de la clé de Registre suivante. La valeur de cette clé est de type REG_DWORD.

HKEY_LOCAL_MACHINE\Logiciel\Microsoft\Windows\Currentversion\PFX\PasswordIterationCount

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

PFXExportCertStore

PFXImportCertStore