Функция 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
В следующей таблице перечислены текущие предопределенные структуры политик цепочки проверки.
Значение | Значение |
---|---|
|
Реализует проверки базовой цепочки политик. Элемент dwFlags структуры, на который указывает pPolicyPara , можно настроить для изменения поведения проверки политики по умолчанию. |
|
Реализует проверки политики цепочки Authenticode. Элемент pvExtraPolicyPara структуры, на который указывает pPolicyPara , может указывать на AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA структуру.
Элемент pvExtraPolicyStatus структуры, на который указывает pPolicyStatus , может указывать на AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS структуру. |
|
Реализует проверки цепочки меток времени Authenticode. Элемент pvExtraPolicyPara структуры данных, на который указывает pPolicyPara , может указывать на AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA структуру.
Элемент pvExtraPolicyStatus структуры данных, на который указывает pPolicyStatus, не используется и должен иметь значение NULL. |
|
Реализует проверки политики ssl-клиента или цепочки серверов. Элемент pvExtraPolicyPara в структуре данных, на которую указывает pPolicyPara , может указывать на SSL_EXTRA_CERT_CHAIN_POLICY_PARA структуру, инициализированную с помощью дополнительных критериев политики.
Примечание Чтобы различать сертификаты авторизации сервера и клиента, вызов функции CertGetCertificateChain для получения контекста цепочки должен указать тип сертификата, задав ожидаемое использование. Задайте ожидаемое использование, задав элемент RequestedUsageструктуры CERT_CHAIN_PARA , переданной во входном параметре pChainPara функции CertGetCertificateChain .
|
|
Реализует базовую политику цепочки ограничений. Выполняет итерацию по всем сертификатам в цепочке, проверяя наличие szOID_BASIC_CONSTRAINTS или расширения szOID_BASIC_CONSTRAINTS2. Если ни то или иного расширения отсутствует, предполагается, что сертификат имеет действительную политику. В противном случае для первого элемента сертификата проверяет, соответствует ли он ожидаемому CA_FLAG или END_ENTITY_FLAG, указанному в элементе dwFlagsструктуры CERT_CHAIN_POLICY_PARA , на которую указывает параметр pPolicyPara . Если ни один из флагов или оба флага не заданы, первым элементом может быть ЦС или END_ENTITY. Все остальные элементы должны быть центром сертификации (ЦС). Если pathLenConstraint присутствует в расширении, он проверяется.
Первые элементы в оставшихся простых цепочках (то есть сертификаты, используемые для подписания CTL) проверяются как END_ENTITY. Если проверка завершится ошибкой, dwError будет иметь значение TRUST_E_BASIC_CONSTRAINTS. |
|
Реализует политику цепочки проверки подлинности Windows NT, которая состоит из трех отдельных проверок цепочки в следующем порядке:
|
|
Проверяет последний элемент первой простой цепочки на наличие корневого открытого ключа Майкрософт. Если этот элемент не содержит корневой открытый ключ Майкрософт, то элементу dwErrorструктуры CERT_CHAIN_POLICY_STATUS , на которую указывает параметр pPolicyStatus , присваивается значение CERT_E_UNTRUSTEDROOT.
Элемент dwFlags структуры CERT_CHAIN_POLICY_PARA, на который указывает параметр pPolicyStatus, может содержать флаг MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG, что приводит к тому, что эта функция вместо этого проверка для корневого каталога приложения Майкрософт "Корневой центр сертификации Майкрософт 2011". Элемент dwFlags структуры CERT_CHAIN_POLICY_PARA, на который указывает параметр pPolicyPara, может содержать флаг MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG, что приводит к тому, что эта функция также проверка для корней тестов Майкрософт. Примечание Этот идентификатор объекта политики (OID) не выполняет проверки политики сам по себе, он предназначен для использования в сочетании с другими политиками.
|
|
Указывает, что выполняется расширенная проверка сертификатов.
Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: Это значение не поддерживается. |
|
Проверяет, имеют ли какие-либо сертификаты в цепочке слабые криптографии или соответствие корневого сертификата стороннего поставщика, и предоставляет строку ошибки. Элемент pvExtraPolicyStatus структуры CERT_CHAIN_POLICY_STATUS, на который указывает параметр pPolicyStatus , должен указывать на SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS, который обновляется с учетом результатов проверок соответствия ненадежной криптографии и корневой программы.
Перед вызовом член cbSize структуры CERT_CHAIN_POLICY_STATUS, на которую указывает параметр pPolicyStatus , должен иметь значение, большее или равное sizeof(SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS). Член dwError в структуре CERT_CHAIN_POLICY_STATUS, на который указывает параметр pPolicyStatus , будет иметь значение TRUST_E_CERT_SIGNATURE для потенциального слабого шифрования и для CERT_E_UNTRUSTEDROOT для сторонних корней, которые не соответствуют программе Microsoft Root. Windows 10 версии 1607, Windows Server 2016, Windows 10 версии 1511 с KB3172985, Windows 10 RTM с KB3163912, Windows 8.1 и Windows Server 2012 R2 с KB3163912, Windows 7 с пакетом обновления 1 (SP1) и Windows Server 2008 R2 с пакетом обновления 1 (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 и обновляется член dwErrorpPolicyStatus . Значение dwError 0 (ERROR_SUCCESS или S_OK) указывает, что цепочка удовлетворяет указанной политике.
Если цепочка не может быть проверена, возвращаемое значение равно TRUE , и необходимо проверить параметр pPolicyStatus на наличие фактической ошибки.
Значение FALSE указывает, что функции не удалось проверка для политики.
Комментарии
Элемент dwErrorструктуры CERT_CHAIN_POLICY_STATUS , на который указывает pPolicyStatus , может применяться к одному элементу цепочки, к простой цепочке или ко всему контексту цепочки. Если dwError применяется ко всему контексту цепочки, члены lChainIndex и lElementIndexструктуры CERT_CHAIN_POLICY_STATUS имеют значение –1. Если dwError применяется к полной простой цепочке, lElementIndex имеет значение –1, а lChainIndex — индекс первой цепочки с ошибкой. Если dwError применяется к одному элементу сертификата, lChainIndex и lElementIndex индексы первого сертификата с ошибкой.
Чтобы получить элемент certificate, используйте следующий синтаксис:
pChainContext->rgpChain[lChainIndex]->rgpElement[lElementIndex];
Используйте функцию CertGetCertificateChain для включения и выполнения проверки отзыва сертификата. Функция CertVerifyCertificateChainPolicy не проверка, если сертификаты в цепочке сертификатов отозваны.
Требования
Минимальная версия клиента | Windows XP [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | 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 Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по