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
현재 미리 정의된 확인 체인 정책 구조는 다음 표에 나열되어 있습니다.
값 | 의미 |
---|---|
|
기본 체인 정책 확인 검사를 구현합니다. pPolicyPara가 가리키는 구조체의 dwFlags 멤버를 설정하여 기본 정책 검사 동작을 변경할 수 있습니다. |
|
Authenticode 체인 정책 확인 검사를 구현합니다. pPolicyPara가 가리키는 구조체의 pvExtraPolicyPara 멤버는 AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA 구조를 가리키도록 설정할 수 있습니다.
pPolicyStatus가 가리키는 구조체의 pvExtraPolicyStatus 멤버는 AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS 구조를 가리키도록 설정할 수 있습니다. |
|
Authenticode 타임 스탬프 체인 정책 확인 검사를 구현합니다. pPolicyPara가 가리키는 데이터 구조의 pvExtraPolicyPara 멤버는 AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA 구조를 가리키도록 설정할 수 있습니다.
pPolicyStatus가 가리키는 데이터 구조의 pvExtraPolicyStatus 멤버는 사용되지 않으며 NULL로 설정해야 합니다. |
|
SSL 클라이언트/서버 체인 정책 확인 검사를 구현합니다. pPolicyPara가 가리키는 데이터 구조의 pvExtraPolicyPara 멤버는 추가 정책 조건으로 초기화된 SSL_EXTRA_CERT_CHAIN_POLICY_PARA 구조를 가리키도록 설정할 수 있습니다.
참고 서버 및 클라이언트 권한 부여 인증서를 구분하기 위해 체인 컨텍스트를 가져오기 위해 CertGetCertificateChain 함수에 대한 호출은 예상되는 사용량을 설정하여 인증서 유형을 지정해야 합니다. CertGetCertificateChain 함수의 pChainPara 입력 매개 변수에 전달된 CERT_CHAIN_PARA 구조체의 RequestedUsage 멤버를 설정하여 예상 사용량을 설정합니다.
|
|
기본 제약 조건 체인 정책을 구현합니다. 체인의 모든 인증서를 반복하여 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 설정됩니다. |
|
다음 순서로 세 가지 고유 체인 확인으로 구성된 Windows NT 인증 체인 정책을 구현합니다.
|
|
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(정책 개체 식별자 )는 정책 확인 검사를 단독으로 수행하지 않으며 다른 정책과 함께 사용됩니다.
|
|
인증서의 확장 유효성 검사가 수행되도록 지정합니다.
Windows Server 2008, Windows Vista, Windows Server 2003 및 Windows XP: 이 값은 지원되지 않습니다. |
|
체인의 인증서에 약한 암호화가 있는지 또는 타사 루트 인증서 준수 여부를 확인하고 오류 문자열을 제공합니다. 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가 반환되고 pPolicyStatus의 dwError 멤버가 업데이트됩니다. dwError 0(ERROR_SUCCESS 또는 S_OK)은 체인이 지정된 정책을 충족했음을 나타냅니다.
체인의 유효성을 검사할 수 없는 경우 반환 값은 TRUE 이며 실제 오류에 대한 pPolicyStatus 매개 변수를 확인해야 합니다.
FALSE 값은 함수가 정책에 대해 검사 수 없음을 나타냅니다.
설명
pPolicyStatus가 가리키는 CERT_CHAIN_POLICY_STATUS 구조체의 dwError 멤버는 단일 체인 요소, 단순 체인 또는 전체 체인 컨텍스트에 적용할 수 있습니다. dwError가 전체 체인 컨텍스트에 적용되는 경우 CERT_CHAIN_POLICY_STATUS 구조체의 lChainIndex 및 lElementIndex 멤버는 모두 –1로 설정됩니다. dwError가 완전한 단순 체인에 적용되는 경우 lElementIndex는 –1로 설정되고 lChainIndex는 오류가 있는 첫 번째 체인의 인덱스로 설정됩니다. dwError가 단일 인증서 요소에 적용되는 경우 lChainIndex 및 lElementIndex는 오류가 있는 첫 번째 인증서를 인덱싱합니다.
인증서 요소를 얻으려면 다음 구문을 사용합니다.
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
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기