CertVerifyCertificateChainPolicy 함수(wincrypt.h)
CertVerifyCertificateChainPolicy 함수는 인증서 체인을 검사하여 지정된 유효성 정책 조건 준수를 포함하여 유효성을 확인합니다.
통사론
BOOL CertVerifyCertificateChainPolicy(
[in] LPCSTR pszPolicyOID,
[in] PCCERT_CHAIN_CONTEXT pChainContext,
[in] PCERT_CHAIN_POLICY_PARA pPolicyPara,
[in, out] PCERT_CHAIN_POLICY_STATUS pPolicyStatus
);
매개 변수
[in] pszPolicyOID
현재 미리 정의된 확인 체인 정책 구조는 다음 표에 나와 있습니다.
값 | 의미 |
---|---|
CERT_CHAIN_POLICY_BASE (LPCSTR) 1 |
기본 체인 정책 확인 검사를 구현합니다. pPolicyPara 가리키는 구조체의 dwFlags 멤버를 설정하여 기본 정책 검사 동작을 변경할 수 있습니다. |
CERT_CHAIN_POLICY_AUTHENTICODE (LPCSTR) 2 |
Authenticode 체인 정책 확인 검사를 구현합니다.
pPolicyPara 가리키는 구조체의 pvExtraPolicyPara 멤버는 AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA 구조를 가리키도록 설정할 수 있습니다. pPolicyStatus 가리키는 구조체의 pvExtraPolicyStatus 멤버는 AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS 구조를 가리키도록 설정할 수 있습니다. |
CERT_CHAIN_POLICY_AUTHENTICODE_TS (LPCSTR) 3 |
Authenticode 타임스탬프를 체인 정책 확인 검사를 구현합니다.
pPolicyPara 가리키는 데이터 구조의 pvExtraPolicyPara 멤버는 AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA 구조를 가리키도록 설정할 수 있습니다. pPolicyStatus 가리키는 데이터 구조의 pvExtraPolicyStatus 멤버는 사용되지 않으며 NULL 설정해야 합니다. |
CERT_CHAIN_POLICY_SSL (LPCSTR) 4 |
SSL 클라이언트/서버 체인 정책 확인 검사를 구현합니다.
pPolicyPara 가리키는 데이터 구조의 pvExtraPolicyPara 멤버는 추가 정책 조건으로 초기화된 SSL_EXTRA_CERT_CHAIN_POLICY_PARA 구조를 가리키도록 설정할 수 있습니다. 참고: 서버 및 클라이언트 권한 부여 인증서를 구분하려면 체인 컨텍스트를 가져오는 CertGetCertificateChain 함수에 대한 호출은 예상 사용을 설정하여 인증서 유형을 지정해야 합니다. CertGetCertificateChain 함수의 pChainPara 입력 매개 변수에 전달된 CERT_CHAIN_PARA 구조의 RequestedUsage 멤버를 설정하여 예상 사용량을 설정합니다. |
CERT_CHAIN_POLICY_BASIC_CONSTRAINTS (LPCSTR) 5 |
기본 제약 조건 체인 정책을 구현합니다. 체인의 모든 인증서를 반복하여 szOID_BASIC_CONSTRAINTS 또는 szOID_BASIC_CONSTRAINTS2 확장을 확인합니다. 두 확장이 모두 없으면 인증서에 유효한 정책이 있는 것으로 간주됩니다. 그렇지 않은 경우 첫 번째 인증서 요소에 대해 pPolicyPara 매개 변수가 가리키는 CERT_CHAIN_POLICY_PARA 구조의 dwFlags 멤버에 지정된 예상 CA_FLAG 또는 END_ENTITY_FLAG 일치하는지 확인합니다. 두 플래그가 모두 설정되지 않으면 첫 번째 요소는 CA 또는 END_ENTITY 수 있습니다. 다른 모든 요소는 CA(인증 기관)여야 합니다. 확장에 PathLenConstraint가 있으면 선택됩니다. 나머지 단순 체인의 첫 번째 요소(즉, CTL에 서명하는 데 사용되는 인증서)는 END_ENTITY 확인됩니다. 이 확인에 실패하면 dwError TRUST_E_BASIC_CONSTRAINTS 설정됩니다. |
CERT_CHAIN_POLICY_NT_AUTH (LPCSTR) 6 |
다음 순서대로 세 가지 고유 체인 확인으로 구성된 Windows NT 인증 체인 정책을 구현합니다. - CERT_CHAIN_POLICY_BASE: 기본 체인 정책 확인 검사를 구현합니다. pPolicyParadwFlags LOWORD를 설정하여 기본 정책 검사 동작을 변경할 수 있습니다. 자세한 내용은 CERT_CHAIN_POLICY_BASE 참조하세요. - CERT_CHAIN_POLICY_BASIC_CONSTRAINTS: 기본 제약 조건 체인 정책을 구현합니다. dwFlags HIWORD를 설정하여 첫 번째 요소가 CA 또는 END_ENTITY 중 하나여야 하는지 여부를 지정할 수 있습니다. 자세한 내용은 CERT_CHAIN_POLICY_BASIC_CONSTRAINTS 참조하세요. - 체인의 두 번째 요소인 최종 인증서를 발급한 CA가 Windows NT 인증에 대해 신뢰할 수 있는 CA인지 확인합니다. CA는 CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE 저장소 위치에 있는 "NTAuth" 시스템 레지스트리 저장소에 있는 경우 신뢰할 수 있는 것으로 간주됩니다. 이 확인에 실패하면 CA는 신뢰할 수 없으며 dwError CERT_E_UNTRUSTEDCA 설정됩니다. CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG CERT_PROT_ROOT_FLAGS_REGPATH 정의한 HKEY_LOCAL_MACHINE 정책 ProtectedRoots 하위 키의 Flags 값에 설정되고 위의 검사가 실패하면 체인이 dwInfoStatus설정된 CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS 확인됩니다. UPN을 포함한 모든 네임스페이스에 대해 유효한 이름 제약 조건이 있는 경우 설정됩니다. 체인에 이 정보 상태가 설정되어 있지 않으면 dwError CERT_E_UNTRUSTEDCA 설정됩니다. |
CERT_CHAIN_POLICY_MICROSOFT_ROOT (LPCSTR) 7 |
Microsoft 루트 공개 키에 대한 첫 번째 단순 체인의 마지막 요소를 확인합니다. 해당 요소에 Microsoft 루트 공개 키가 포함되어 있지 않으면 pPolicyStatus 매개 변수가 가리키는 CERT_CHAIN_POLICY_STATUS 구조의 dwError 멤버가 CERT_E_UNTRUSTEDROOT설정됩니다. pPolicyStatus 매개 변수가 가리키는 CERT_CHAIN_POLICY_PARA 구조의 dwFlags 멤버는 MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG 플래그를 포함할 수 있으며, 이로 인해 이 함수는 Microsoft 애플리케이션 루트 "Microsoft 루트 인증 기관 2011"을 대신 확인합니다. pPolicyPara 매개 변수가 가리키는 CERT_CHAIN_POLICY_PARA 구조의 dwFlags 멤버는 MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 플래그를 포함할 수 있으므로 이 함수는 Microsoft 테스트 루트도 확인합니다. 참고: OID(개체 식별자)를 |
CERT_CHAIN_POLICY_EV (LPCSTR) 8 |
인증서의 확장 유효성 검사가 수행되도록 지정합니다. Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 지원되지 않습니다. |
CERT_CHAIN_POLICY_SSL_F12 (LPCSTR) 9 |
체인의 인증서에 약한 암호화가 있는지 또는 타사 루트 인증서 준수 여부를 확인하고 오류 문자열을 제공합니다.
pPolicyStatus 매개 변수가 가리키는 CERT_CHAIN_POLICY_STATUS 구조의 pvExtraPolicyStatus 멤버는 약한 암호화 및 루트 프로그램 준수 검사의 결과로 업데이트되는 SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS가리킵니다. 호출하기 전에 pPolicyStatus 매개 변수가 가리키는 CERT_CHAIN_POLICY_STATUS 구조의 cbSize 멤버를 sizeof(SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS)보다 크거나 같은 값으로 설정해야 합니다. pPolicyStatus 매개 변수가 가리키는 CERT_CHAIN_POLICY_STATUS 구조의 dwError 멤버는 잠재적인 약한 암호화에 대해 TRUST_E_CERT_SIGNATURE 설정되고 Microsoft 루트 프로그램을 준수하지 않는 타사 루트에 대한 CERT_E_UNTRUSTEDROOT 설정됩니다. Windows 10, 버전 1607, Windows Server 2016, Windows 10, KB3172985 버전 1511, KB3163912 있는 Windows 10 RTM, KB3163912 Windows 8.1 및 Windows Server 2012 R2, WINDOWS 7 SP1 및 Windows Server 2008 R2 SP1이 KB3161029 |
[in] pChainContext
확인할 체인을 포함하는 CERT_CHAIN_CONTEXT 구조체에 대한 포인터입니다.
[in] pPolicyPara
체인에 대한 정책 확인 조건을 제공하는 CERT_CHAIN_POLICY_PARA 구조체에 대한 포인터입니다. 해당 구조의 dwFlags 멤버를 설정하여 기본 정책 검사 동작을 변경할 수 있습니다.
또한 정책별 매개 변수는 구조체의 pvExtraPolicyPara 멤버로 전달될 수도 있습니다.
[in, out] pPolicyStatus
체인의 상태 정보가 반환되는 CERT_CHAIN_POLICY_STATUS 구조체에 대한 포인터입니다. OID별 추가 상태는 이 구조체의 pvExtraPolicyStatus 멤버에서 반환될 수 있습니다.
반환 값
반환 값은 함수가 정책을 확인할 수 있었는지 여부를 나타내며, 정책 검사가 실패했는지 또는 통과했는지를 나타내지 않습니다.
지정된 정책에 대해 체인을 확인할 수 있는 경우 TRUE
반환되고 pPolicyStatusdwError 멤버가 업데이트됩니다.
0
(ERROR_SUCCESS 또는 S_OK)의 dwError 지정된 정책을 충족하는 체인을 나타냅니다.
체인의 유효성을 검사할 수 없는 경우 반환 값이 TRUE
실제 오류에 대한 pPolicyStatus 매개 변수를 확인해야 합니다.
FALSE
값은 함수가 정책을 확인할 수 없음을 나타냅니다.
발언
pPolicyStatus 가리키는 CERT_CHAIN_POLICY_STATUS 구조체의 dwError 멤버는 단일 체인 요소, 단순 체인 또는 전체 체인 컨텍스트에 적용할 수 있습니다.
dwError 전체 체인 컨텍스트에 적용되는 경우 lChainIndex 및 CERT_CHAIN_POLICY_STATUS 구조의 lElementIndex 멤버는 모두 –1
설정됩니다.
dwError 완전한 단순 체인에 적용되는 경우 lElementIndex–1
설정되고 lChainIndex 오류가 있는 첫 번째 체인의 인덱스로 설정됩니다.
인증서 요소를 얻으려면 다음 구문을 사용합니다.
pChainContext->rgpChain[lChainIndex]->rgpElement[lElementIndex];
CertGetCertificateChain 함수를 사용하여 인증서 해지 검사를 사용하도록 설정하고 수행합니다. CertVerifyCertificateChainPolicy 함수는 인증서 체인의 인증서가 해지되었는지 확인하지 않습니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2003 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | wincrypt.h |
라이브러리 | Crypt32.lib |
DLL | Crypt32.dll |
참고 항목
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS