PFXExportCertStoreEx 함수(wincrypt.h)

PFXExportCertStoreEx 함수는 인증서를 내보내고, 사용 가능한 경우 참조된 인증서 저장소에서 연결된 프라이빗 키를 내보냅니다. 이 함수는 이전 PfxExportCertStore 함수를 대체합니다. 향상된 프라이빗 키 보안에 사용해야 합니다. 이 함수에서 만든 PFX BLOB은 암호로 보호됩니다.

구문

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

매개 변수

[in] hStore

내보낼 인증서를 포함하는 인증서 저장소의 핸들입니다.

[in, out] pPFX

내보낸 인증서 및 키가 있는 PFX 패킷을 포함하는 CRYPT_DATA_BLOB 구조체에 대한 포인터입니다. pPFX-pbData> 가 NULL인 경우 함수는 인코딩된 BLOB에 필요한 바이트 수를 계산하고 이를 pPFX-cbData>로 반환합니다. 필요한 크기의 할당된 버퍼를 가리키는 pPFX-pbData> 를 사용하여 함수를 호출하면 함수는 인코딩된 바이트를 버퍼에 복사하고 인코딩 바이트 길이로 pPFX-cbData>를 업데이트합니다.

[in] szPassword

PFX 패킷을 암호화하고 확인하는 데 사용되는 문자열 암호입니다. 암호 사용을 마쳤으면 SecureZeroMemory 함수를 호출하여 메모리에서 암호를 지웁 수 있습니다. 암호 보호에 대한 자세한 내용은 암호 처리를 참조하세요.

[in] pvPara

dwFlags 매개 변수에 PKCS12_PROTECT_TO_DOMAIN_SIDS 또는 PKCS12_EXPORT_PBES2_PARAMS 포함되어 있지 않은 경우 이 매개 변수는 NULL이어야 합니다. 따라서 Windows 8 및 Windows Server 2012 이전에는 이 매개 변수가 NULL이어야 합니다.

Windows 8 및 Windows Server 2012 시작하여 dwFlags 매개 변수에 PKCS12_PROTECT_TO_DOMAIN_SIDS 포함하는 경우 pvPara 매개 변수를 설정하여 NCRYPT_DESCRIPTOR_HANDLE 값을 가리키도록 설정하여 PFX 암호가 PFX BLOB 내부에서 보호될 Active Directory 보안 주체를 식별할 수 있습니다. 현재 Active Directory 사용자, 컴퓨터 또는 그룹으로 암호를 보호할 수 있습니다. 보호 설명자에 대한 자세한 내용은 NCryptCreateProtectionDescriptor를 참조하세요.

Windows 10 1709(Fall Creators update) 및 Windows Server 2019부터 dwFlags 매개 변수에 PKCS12_EXPORT_PBES2_PARAMS 포함된 경우 pvParaPKCS12_EXPORT_PBES2_PARAMS 값으로 설정하여 사용할 암호 기반 암호화 알고리즘을 선택해야 합니다.

[in] dwFlags

플래그 값은 다음의 조합으로 설정할 수 있습니다.

의미
EXPORT_PRIVATE_KEYS
0x0004
프라이빗 키는 인증서뿐만 아니라 내보내집니다.
REPORT_NO_PRIVATE_KEY
0x0001
연결된 프라이빗 키가 없는 인증서가 발견되면 함수는 마지막 오류가 CRYPT_E_NOT_FOUND 또는 NTE_NO_KEY 설정된 FALSE를 반환합니다.
REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY
0x0002
내보낼 수 없는 프라이빗 키가 있는 인증서가 발견되면 함수는 FALSE를 반환하고 마지막 오류 집합을 NTE_BAD_KEY, NTE_BAD_KEY_STATE 또는 NTE_PERM.
PKCS12_INCLUDE_EXTENDED_PROPERTIES
0x0010
인증서의 모든 확장 속성을 내보냅니다.

Windows Server 2003 및 Windows XP: 이 값은 지원되지 않습니다.

PKCS12_PROTECT_TO_DOMAIN_SIDS
0x0020
PFX BLOB에는 pvPara 매개 변수가 가리키는 AD(Active Directory) 보호 설명자로 보호되는 포함된 암호가 포함되어 있습니다. szPassword 매개 변수가 NULL이 아니거나 비어 있으면 지정된 암호가 보호됩니다. 그러나 szPassword 매개 변수가 NULL 이거나 빈 문자열인 경우 임의의 40자 암호가 만들어지고 보호됩니다.

PFXImportCertStore 는 지정된 보호 설명자를 사용하여 사용자가 지정하든 임의로 생성하든 관계없이 포함된 암호를 해독한 다음, 암호를 사용하여 PFX BLOB의 암호를 해독합니다.

Windows 8 및 Windows Server 2012: 이 플래그에 대한 지원이 시작됩니다.

PKCS12_EXPORT_PBES2_PARAMS
0x0080
pvPara로 전달된 PKCS12_EXPORT_PBES2_PARAMS 값으로 지정된 암호 기반 암호화 알고리즘을 사용하여 내보냅니다.

Windows 10 1709(Fall Creators update) 및 Windows Server 2019: 이 플래그에 대한 지원이 시작됩니다.

반환 값

함수가 성공하면 TRUE (0이 아닌)를 반환하고, 함수가 실패하면 FALSE (0)를 반환합니다. 확장 오류 정보는 GetLastError를 호출합니다.

설명

Windows 8 및 Windows Server 2012 Active Directory 사용자, 컴퓨터 또는 그룹에 대한 PFX 암호를 보호할 수 있습니다. 이렇게 하기로 선택했지만 암호를 만들지 않으면 임시 암호가 임의로 선택됩니다. 암호는 Active Directory 보안 주체를 사용하여 암호화된 다음 PFX BLOB에 포함됩니다. 자세한 내용은 pvPara 매개 변수 및 PKCS12_PROTECT_TO_DOMAIN_SIDS 플래그를 참조하세요.

Windows 10 1709(Fall Creators update) 및 Windows Server 2019부터 다음 레지스트리 키를 사용하여 PFXExportCertStoreEx 함수에서 수행한 암호에 대한 해시 함수의 반복 횟수를 제어할 수 있습니다. 이 키의 값은 REG_DWORD 형식입니다.

Hkey_local_machine\소프트웨어\Microsoft\Windows\CurrentVersion\Pfx\PasswordIterationCount

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 wincrypt.h
라이브러리 Crypt32.lib
DLL Crypt32.dll

추가 정보

PFXExportCertStore

PFXImportCertStore