Condividi tramite


Funzione PFXExportCertStoreEx (wincrypt.h)

La funzione PFXExportCertStoreEx esporta i certificati e, se disponibile, le chiavi private associate dall'archivio certificati a cui si fa riferimento. Questa funzione sostituisce la funzione PfxExportCertStore precedente. Deve essere usato per la sicurezza avanzata delle chiavi private. Il BLOB PFX creato da questa funzione è protetto da una password.

Sintassi

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

Parametri

[in] hStore

Handle dell'archivio certificati contenente i certificati da esportare.

[in, out] pPFX

Puntatore a una struttura CRYPT_DATA_BLOB per contenere il pacchetto PFX con i certificati e le chiavi esportate. Se pPFX-pbData è NULL, la funzione calcola il numero di byte necessari per il BLOB codificato e restituisce questo valore in pPFX-cbData.>> Quando la funzione viene chiamata con pPFX-pbData che punta a un buffer allocato delle dimensioni necessarie, la funzione copia i byte codificati nel buffer e aggiorna pPFX-cbData>> con la lunghezza di byte codificata.

[in] szPassword

Password stringa usata per crittografare e verificare il pacchetto PFX. Al termine dell'uso della password, cancellare la password dalla memoria chiamando la funzione SecureZeroMemory . Per altre informazioni sulla protezione delle password, vedere Gestione delle password.

[in] pvPara

Questo parametro deve essere NULL se il parametro dwFlags non contiene PKCS12_PROTECT_TO_DOMAIN_SIDS o PKCS12_EXPORT_PBES2_PARAMS. Prima di Windows 8 e Windows Server 2012, pertanto, questo parametro deve essere NULL.

A partire da Windows 8 e Windows Server 2012, se il parametro dwFlags contiene PKCS12_PROTECT_TO_DOMAIN_SIDS, è possibile impostare il parametro pvPara per puntare a un valore NCRYPT_DESCRIPTOR_HANDLE per identificare l'entità Active Directory a cui verrà protetta la password PFX all'interno del BLOB PFX. Attualmente, la password può essere protetta da un utente, un computer o un gruppo di Active Directory. Per altre informazioni sui descrittori di protezione, vedere NCryptCreateProtectionDescriptor.

A partire da Windows 10 1709 (fall Creators update) e Windows Server 2019, se il parametro dwFlags contiene PKCS12_EXPORT_PBES2_PARAMS, è necessario impostare il valore pvPara su un valore PKCS12_EXPORT_PBES2_PARAMS per selezionare l'algoritmo di crittografia basato su password da usare.

[in] dwFlags

I valori del flag possono essere impostati su qualsiasi combinazione dei valori seguenti.

Valore Significato
EXPORT_PRIVATE_KEYS
0x0004
Le chiavi private vengono esportate e i certificati.
REPORT_NO_PRIVATE_KEY
0x0001
Se viene rilevato un certificato senza chiave privata associata, la funzione restituisce FALSE con l'ultimo errore impostato su CRYPT_E_NOT_FOUND o NTE_NO_KEY.
REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY
0x0002
Se viene rilevato un certificato con una chiave privata non esportabile, la funzione restituisce FALSE e l'ultimo errore impostato su NTE_BAD_KEY, NTE_BAD_KEY_STATE o NTE_PERM.
PKCS12_INCLUDE_EXTENDED_PROPERTIES
0x0010
Esportare tutte le proprietà estese nel certificato.

Windows Server 2003 e Windows XP: Questo valore non è supportato.

PKCS12_PROTECT_TO_DOMAIN_SIDS
0x0020
Il BLOB PFX contiene una password incorporata che verrà protetta dal descrittore di protezione di Active Directory (AD) a cui punta il parametro pvPara . Se il parametro szPassword non è NULL o vuoto, la password specificata è protetta. Se, tuttavia, il parametro szPassword è NULL o una stringa vuota, viene creata e protetta una password di carattere casuale di 40 (40).

PFXImportCertStore usa il descrittore di protezione specificato per decrittografare la password incorporata, se specificata dall'utente o generata in modo casuale e quindi usa la password per decrittografare il BLOB PFX.

Windows 8 e Windows Server 2012: viene avviato il supporto per questo flag.

PKCS12_EXPORT_PBES2_PARAMS
0x0080
Esportare usando l'algoritmo di crittografia basato su passowrd specificato dal valore PKCS12_EXPORT_PBES2_PARAMS passato come pvPara.

Windows 10 1709 (fall Creators update) e Windows Server 2019: il supporto per questo flag inizia.

Valore restituito

Restituisce TRUE (non zero) se la funzione ha esito positivo e FALSE (zero) se la funzione ha esito negativo. Per informazioni sull'errore estese, chiamare GetLastError.

Commenti

A partire da Windows 8 e Windows Server 2012, è possibile proteggere la password PFX in un utente, un computer o un gruppo di Active Directory. Se si sceglie di farlo, ma non si crea una password, verrà selezionata in modo casuale una password temporanea. La password viene crittografata usando l'entità Active Directory e quindi incorporata nel BLOB PFX. Per altre informazioni, vedere il parametro pvPara e il flag di PKCS12_PROTECT_TO_DOMAIN_SIDS .

A partire da Windows 10 1709 (Fall Creators update) e Windows Server 2019, è possibile controllare il numero di iterazioni della funzione hash sulla password eseguita dalla funzione PFXExportCertStoreEx usando la chiave del Registro di sistema seguente. Il valore in questa chiave è di tipo REG_DWORD.

HKEY_LOCAL_MACHINE\Software\Microsoft\Finestre\Currentversion\PFX\PasswordIterationCount

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione wincrypt.h
Libreria Crypt32.lib
DLL Crypt32.dll

Vedi anche

PFXExportCertStore

PFXImportCertStore