Share via


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 인증 체인 정책을 구현합니다.
  1. CERT_CHAIN_POLICY_BASE — 기본 체인 정책 확인 검사를 구현합니다. dwFlags의 LOWORD는 pPolicyPara에서 설정하여 기본 정책 검사 동작을 변경할 수 있습니다. 자세한 내용은 CERT_CHAIN_POLICY_BASE 참조하세요.
  2. CERT_CHAIN_POLICY_BASIC_CONSTRAINTS — 기본 제약 조건 체인 정책을 구현합니다. dwFlags의 HIWORD를 설정하여 첫 번째 요소가 CA 또는 END_ENTITY 인지 여부를 지정할 수 있습니다. 자세한 내용은 CERT_CHAIN_POLICY_BASIC_CONSTRAINTS 참조하세요.
  3. 체인의 두 번째 요소인 최종 인증서를 발급한 CA가 Windows NT 인증에 대해 신뢰할 수 있는 CA인지 확인합니다. CA는 CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE 저장소 위치에 있는 "NTAuth" 시스템 레지스트리 저장소에 있는 경우 신뢰할 수 있는 것으로 간주됩니다. 이 확인에 실패하면 CA는 신뢰할 수 없으며 dwError는 CERT_E_UNTRUSTEDCA 설정됩니다. CERT_PROT_ROOT_FLAGS_REGPATH 정의된 HKEY_LOCAL_MACHINE 정책 ProtectedRoots 하위 키의 Flags 값에 CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG 설정되고 위의 검사 실패하면 체인이 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 8.1 및 Windows Server 2012 R2가 KB3163912 있는 WINDOWS 10 RTM, 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 멤버가 업데이트됩니다. dwError 0(ERROR_SUCCESS 또는 S_OK)은 체인이 지정된 정책을 충족했음을 나타냅니다.

체인의 유효성을 검사할 수 없는 경우 반환 값은 TRUE 이며 실제 오류에 대한 pPolicyStatus 매개 변수를 확인해야 합니다.

FALSE 값은 함수가 정책에 대해 검사 수 없음을 나타냅니다.

설명

pPolicyStatus가 가리키는 CERT_CHAIN_POLICY_STATUS 구조체의 dwError 멤버는 단일 체인 요소, 단순 체인 또는 전체 체인 컨텍스트에 적용할 수 있습니다. dwError가 전체 체인 컨텍스트에 적용되는 경우 CERT_CHAIN_POLICY_STATUS 구조체의 lChainIndexlElementIndex 멤버는 모두 –1로 설정됩니다. dwError가 완전한 단순 체인에 적용되는 경우 lElementIndex는 –1로 설정되고 lChainIndex는 오류가 있는 첫 번째 체인의 인덱스로 설정됩니다. dwError가 단일 인증서 요소에 적용되는 경우 lChainIndexlElementIndex는 오류가 있는 첫 번째 인증서를 인덱싱합니다.

인증서 요소를 얻으려면 다음 구문을 사용합니다.

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

AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA

CERT_CHAIN_CONTEXT

CERT_CHAIN_POLICY_PARA

CERT_CHAIN_POLICY_STATUS

CertGetCertificateChain

인증서 체인 확인 함수