Função PFXExportCertStoreEx (wincrypt.h)

A função PFXExportCertStoreEx exporta os certificados e, se disponível, suas chaves privadas associadas do repositório de certificados referenciado. Essa função substitui a função PfxExportCertStore mais antiga. Ele deve ser usado para sua segurança de chave privada aprimorada. O BLOB PFX criado por essa função é protegido por uma senha.

Sintaxe

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 do repositório de certificados que contém os certificados a serem exportados.

[in, out] pPFX

Um ponteiro para uma estrutura CRYPT_DATA_BLOB para conter o pacote PFX com os certificados e chaves exportados. Se pPFX-pbData> for NULL, a função calculará o número de bytes necessários para o BLOB codificado e retornará isso em pPFX-cbData.> Quando a função é chamada com pPFX-pbData> apontando para um buffer alocado do tamanho necessário, a função copia os bytes codificados no buffer e atualizapPFX-cbData> com o comprimento do byte de codificação.

[in] szPassword

Senha de cadeia de caracteres usada para criptografar e verificar o pacote PFX. Quando terminar de usar a senha, limpe a senha da memória chamando a função SecureZeroMemory . Para obter mais informações sobre como proteger senhas, consulte Manipulando senhas.

[in] pvPara

Esse parâmetro deverá ser NULL se o parâmetro dwFlags não contiver PKCS12_PROTECT_TO_DOMAIN_SIDS ou PKCS12_EXPORT_PBES2_PARAMS. Antes de Windows 8 e Windows Server 2012, portanto, esse parâmetro deve ser NULL.

Começando com Windows 8 e Windows Server 2012, se o parâmetro dwFlags contiver PKCS12_PROTECT_TO_DOMAIN_SIDS, você poderá definir o parâmetro pvPara para apontar para um valor NCRYPT_DESCRIPTOR_HANDLE para identificar qual entidade de segurança do Active Directory a senha PFX será protegida dentro do BLOB PFX. Atualmente, a senha pode ser protegida para um usuário, computador ou grupo do Active Directory. Para obter mais informações sobre descritores de proteção, consulte NCryptCreateProtectionDescriptor.

A partir do Windows 10 1709 (fall creators update) e do Windows Server 2019, se o parâmetro dwFlags contiver PKCS12_EXPORT_PBES2_PARAMS, você deverá definir o pvPara como um valor PKCS12_EXPORT_PBES2_PARAMS para selecionar o algoritmo de criptografia baseado em senha a ser usado.

[in] dwFlags

Os valores de sinalizador podem ser definidos como qualquer combinação do seguinte.

Valor Significado
EXPORT_PRIVATE_KEYS
0x0004
As chaves privadas são exportadas, bem como os certificados.
REPORT_NO_PRIVATE_KEY
0x0001
Se um certificado não tiver nenhuma chave privada associada, a função retornará FALSE com o último erro definido como CRYPT_E_NOT_FOUND ou NTE_NO_KEY.
REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY
0x0002
Se for encontrado um certificado que tenha uma chave privada não exportável, a função retornará FALSE e o último erro definido como NTE_BAD_KEY, NTE_BAD_KEY_STATE ou NTE_PERM.
PKCS12_INCLUDE_EXTENDED_PROPERTIES
0x0010
Exporte todas as propriedades estendidas no certificado.

Windows Server 2003 e Windows XP: Não há suporte para esse valor.

PKCS12_PROTECT_TO_DOMAIN_SIDS
0x0020
O BLOB PFX contém uma senha inserida que será protegida para o descritor de proteção do AD (Active Directory) apontado pelo parâmetro pvPara . Se o parâmetro szPassword não for NULL ou vazio, a senha especificada será protegida. Se, no entanto, o parâmetro szPassword for NULL ou uma cadeia de caracteres vazia, uma senha de caractere aleatória de quarenta (40) será criada e protegida.

PFXImportCertStore usa o descritor de proteção especificado para descriptografar a senha inserida, especificada pelo usuário ou gerada aleatoriamente e, em seguida, usa a senha para descriptografar o BLOB PFX.

Windows 8 e Windows Server 2012: o suporte para esse sinalizador começa.

PKCS12_EXPORT_PBES2_PARAMS
0x0080
Exporte usando o algoritmo de criptografia baseado em passowrd especificado pelo valor PKCS12_EXPORT_PBES2_PARAMS passado como pvPara.

Windows 10 1709 (fall creators update) e Windows Server 2019: o suporte para esse sinalizador começa.

Retornar valor

Retornará TRUE (diferente de zero) se a função for bem-sucedida e FALSE (zero) se a função falhar. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Começando com Windows 8 e Windows Server 2012, você pode proteger a senha PFX para um usuário, computador ou grupo do Active Directory. Se você optar por fazer isso, mas não criar uma senha, uma senha temporária será selecionada aleatoriamente. A senha é criptografada usando a entidade de segurança do Active Directory e inserida no BLOB PFX. Para obter mais informações, consulte o parâmetro pvPara e o sinalizador PKCS12_PROTECT_TO_DOMAIN_SIDS .

A partir do Windows 10 1709 (fall creators update) e do Windows Server 2019, você pode controlar o número de iterações da função de hash sobre a senha feita pela função PFXExportCertStoreEx usando a chave do Registro a seguir. O valor nessa chave é do tipo REG_DWORD.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho wincrypt.h
Biblioteca Crypt32.lib
DLL Crypt32.dll

Confira também

PFXExportCertStore

PFXImportCertStore