PFXExportCertStoreEx-Funktion (wincrypt.h)

Die PFXExportCertStoreEx-Funktion exportiert die Zertifikate und, falls verfügbar, die zugehörigen privaten Schlüssel aus dem Zertifikatspeicher, auf den verwiesen wird. Diese Funktion ersetzt die ältere PfxExportCertStore-Funktion . Es sollte für die verbesserte Sicherheit des privaten Schlüssels verwendet werden. Das von dieser Funktion erstellte PFX-BLOB ist durch ein Kennwort geschützt.

Syntax

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

Parameter

[in] hStore

Handle des Zertifikatspeichers, der die zu exportierenden Zertifikate enthält.

[in, out] pPFX

Ein Zeiger auf eine CRYPT_DATA_BLOB Struktur, die das PFX-Paket mit den exportierten Zertifikaten und Schlüsseln enthält. Wenn pPFX-pbData>NULL ist, berechnet die Funktion die Anzahl der Bytes, die für das codierte BLOB benötigt werden, und gibt diese inpPFX-cbData> zurück. Wenn die Funktion mit pPFX-pbData> aufgerufen wird, die auf einen zugeordneten Puffer der erforderlichen Größe verweist, kopiert die Funktion die codierten Bytes in den Puffer und aktualisiertpPFX-cbData> mit der Codierungsbytelänge.

[in] szPassword

Zeichenfolgenkennwort zum Verschlüsseln und Überprüfen des PFX-Pakets. Wenn Sie die Verwendung des Kennworts abgeschlossen haben, löschen Sie das Kennwort aus dem Arbeitsspeicher, indem Sie die SecureZeroMemory-Funktion aufrufen. Weitere Informationen zum Schützen von Kennwörtern finden Sie unter Behandeln von Kennwörtern.

[in] pvPara

Dieser Parameter muss NULL sein, wenn der dwFlags-Parameter keine PKCS12_PROTECT_TO_DOMAIN_SIDS oder PKCS12_EXPORT_PBES2_PARAMS enthält. Vor Windows 8 und Windows Server 2012 muss dieser Parameter daher NULL sein.

Wenn der dwFlags-ParameterPKCS12_PROTECT_TO_DOMAIN_SIDS enthält, können Sie ab Windows 8 und Windows Server 2012 den pvPara-Parameter so festlegen, dass er auf einen NCRYPT_DESCRIPTOR_HANDLE-Wert zeigt, um zu ermitteln, für welchen Active Directory-Prinzipal das PFX-Kennwort innerhalb des PFX-BLOBs geschützt wird. Derzeit kann das Kennwort für einen Active Directory-Benutzer, -Computer oder eine Active Directory-Gruppe geschützt werden. Weitere Informationen zu Schutzdeskriptoren finden Sie unter NCryptCreateProtectionDescriptor.

Ab Windows 10 1709 (Fall Creators Update) und Windows Server 2019 sollten Sie, wenn der dwFlags-ParameterPKCS12_EXPORT_PBES2_PARAMS enthält, für pvPara einen PKCS12_EXPORT_PBES2_PARAMS Wert festlegen, um den zu verwendenden kennwortbasierten Verschlüsselungsalgorithmus auszuwählen.

[in] dwFlags

Flagwerte können auf eine beliebige Kombination der folgenden Werte festgelegt werden.

Wert Bedeutung
EXPORT_PRIVATE_KEYS
0x0004
Private Schlüssel werden ebenso exportiert wie die Zertifikate.
REPORT_NO_PRIVATE_KEY
0x0001
Wenn ein Zertifikat gefunden wird, das keinen zugeordneten privaten Schlüssel aufweist, gibt die Funktion FALSE zurück, wobei der letzte Fehler entweder auf CRYPT_E_NOT_FOUND oder NTE_NO_KEY festgelegt ist.
REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY
0x0002
Wenn ein Zertifikat gefunden wird, das über einen nicht exportierbaren privaten Schlüssel verfügt, gibt die Funktion FALSE zurück, und der letzte Fehler wurde auf NTE_BAD_KEY, NTE_BAD_KEY_STATE oder NTE_PERM festgelegt.
PKCS12_INCLUDE_EXTENDED_PROPERTIES
0x0010
Exportieren Sie alle erweiterten Eigenschaften für das Zertifikat.

Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.

PKCS12_PROTECT_TO_DOMAIN_SIDS
0x0020
Das PFX-BLOB enthält ein eingebettetes Kennwort, das durch den Active Directory-Schutzdeskriptor (AD) geschützt wird, auf den der parameter pvPara verweist. Wenn der szPassword-Parameter nicht NULL oder leer ist, ist das angegebene Kennwort geschützt. Wenn der szPassword-Parameter jedoch NULL oder eine leere Zeichenfolge ist, wird ein zufälliges vierzig (40) Zeichenkennwort erstellt und geschützt.

PFXImportCertStore verwendet den angegebenen Schutzdeskriptor, um das vom Benutzer angegebene oder zufällig generierte eingebettete Kennwort zu entschlüsseln, und verwendet dann das Kennwort, um das PFX-BLOB zu entschlüsseln.

Windows 8 und Windows Server 2012: Die Unterstützung für dieses Flag beginnt.

PKCS12_EXPORT_PBES2_PARAMS
0x0080
Exportieren Sie den passowrd-basierten Verschlüsselungsalgorithmus, der vom PKCS12_EXPORT_PBES2_PARAMS als pvPara übergebenen Wert angegeben wird.

Windows 10 1709 (Fall Creators Update) und Windows Server 2019: Unterstützung für dieses Flag beginnt.

Rückgabewert

Gibt TRUE (ungleich 0) zurück, wenn die Funktion erfolgreich ist, und FALSE (null), wenn die Funktion fehlschlägt. Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.

Hinweise

Ab Windows 8 und Windows Server 2012 können Sie das PFX-Kennwort vor einem Active Directory-Benutzer, -Computer oder einer Active Directory-Gruppe schützen. Wenn Sie sich dafür entscheiden, aber kein Kennwort erstellen, wird nach dem Zufallsprinzip ein temporäres Kennwort ausgewählt. Das Kennwort wird mithilfe des Active Directory-Prinzipals verschlüsselt und dann in das PFX-BLOB eingebettet. Weitere Informationen finden Sie im PvPara-Parameter und im flag PKCS12_PROTECT_TO_DOMAIN_SIDS .

Ab Windows 10 1709 (Fall Creators Update) und Windows Server 2019 können Sie die Anzahl der Iterationen der Hashfunktion über das Kennwort der PFXExportCertStoreEx-Funktion mithilfe des folgenden Registrierungsschlüssels steuern. Der Wert in diesem Schlüssel ist vom Typ REG_DWORD.

HKEY_LOCAL_MACHINE\Software\Microsoft\Fenster\Currentversion\PFX\PasswordIterationCount

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile wincrypt.h
Bibliothek Crypt32.lib
DLL Crypt32.dll

Weitere Informationen

PFXExportCertStore

PFXImportCertStore