Fonction CertVerifyCertificateChainPolicy (wincrypt.h)

La fonction CertVerifyCertificateChainPolicy vérifie une chaîne de certificats pour vérifier sa validité, y compris sa conformité avec les critères de stratégie de validité spécifiés.

Syntaxe

BOOL CertVerifyCertificateChainPolicy(
  [in]      LPCSTR                    pszPolicyOID,
  [in]      PCCERT_CHAIN_CONTEXT      pChainContext,
  [in]      PCERT_CHAIN_POLICY_PARA   pPolicyPara,
  [in, out] PCERT_CHAIN_POLICY_STATUS pPolicyStatus
);

Paramètres

[in] pszPolicyOID

Les structures de stratégie de chaîne de vérification prédéfinies actuelles sont répertoriées dans le tableau suivant.

Valeur Signification
CERT_CHAIN_POLICY_BASE
(LPCSTR) 1
Implémente les vérifications de la stratégie de chaîne de base. Les dwFlags membre de la structure pointée par pPolicyPara peuvent être définis pour modifier le comportement de vérification de stratégie par défaut.
CERT_CHAIN_POLICY_AUTHENTICODE
(LPCSTR) 2
Implémente les vérifications de vérification de la stratégie Authenticode. Le membre pvExtraPolicyPara de la structure pointée par pPolicyPara peut être défini pour pointer vers une structure AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA.

Le pvExtraPolicyStatus membre de la structure pointée par pPolicyStatus peut être défini pour pointer vers une structure AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS.
CERT_CHAIN_POLICY_AUTHENTICODE_TS
(LPCSTR) 3
Implémente les vérifications de la stratégie de chaîne d’horodatage Authenticode. Le membre pvExtraPolicyPara de la structure de données pointée par pPolicyPara peut être défini pour pointer vers une structure AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA.

Le pvExtraPolicyStatus membre de la structure de données pointée par pPolicyStatus n’est pas utilisé et doit être défini sur NULL.
CERT_CHAIN_POLICY_SSL
(LPCSTR) 4
Implémente les vérifications de la stratégie de chaîne de serveur/client SSL. Le membre pvExtraPolicyPara dans la structure de données pointée par pPolicyPara peut être défini pour pointer vers une structure SSL_EXTRA_CERT_CHAIN_POLICY_PARA initialisée avec des critères de stratégie supplémentaires.

Remarque : Pour différencier les certificats d’autorisation du serveur et du client, l’appel à la fonction CertGetCertificateChain pour obtenir le contexte de chaîne doit spécifier le type de certificat en définissant l’utilisation attendue. Définissez l’utilisation attendue en définissant le membre RequestedUsage de la structure CERT_CHAIN_PARA passée dans le paramètre d’entrée pChainPara de la fonction CertGetCertificateChain .
CERT_CHAIN_POLICY_BASIC_CONSTRAINTS
(LPCSTR) 5
Implémente la stratégie de chaîne de contraintes de base. Effectue une itération dans tous les certificats de la vérification de la chaîne pour une extension de szOID_BASIC_CONSTRAINTS ou de szOID_BASIC_CONSTRAINTS2. Si aucune extension n’est présente, le certificat est supposé avoir une stratégie valide. Sinon, pour le premier élément de certificat, vérifie s’il correspond à la CA_FLAG attendue ou END_ENTITY_FLAG spécifiée dans le membre dwFlags de la structure CERT_CHAIN_POLICY_PARA pointée par le paramètre pPolicyPara. Si aucun des deux indicateurs n’est défini, le premier élément peut être une autorité de certification ou un END_ENTITY. Tous les autres éléments doivent être une autorité de certification (CA). Si PathLenConstraint est présent dans l’extension, elle est cochée.

Les premiers éléments des chaînes simples restantes (c’est-à-dire les certificats utilisés pour signer la durée de vie) sont vérifiés pour être un END_ENTITY. Si cette vérification échoue, dwError est défini sur TRUST_E_BASIC_CONSTRAINTS.
CERT_CHAIN_POLICY_NT_AUTH
(LPCSTR) 6
Implémente la stratégie de chaîne d’authentification Windows NT, qui se compose de trois vérifications de chaîne distinctes dans l’ordre suivant :

- CERT_CHAIN_POLICY_BASE : implémente les vérifications de vérification de la stratégie de chaîne de base. Le LOWORD de dwFlags peut être défini dans pPolicyPara pour modifier le comportement de vérification de stratégie par défaut. Pour plus d’informations, consultez CERT_CHAIN_POLICY_BASE.
- CERT_CHAIN_POLICY_BASIC_CONSTRAINTS : implémente la stratégie de chaîne de contraintes de base. HiWORD de dwFlags peut être défini pour spécifier si le premier élément doit être une autorité de certification ou END_ENTITY. Pour plus d’informations, consultez CERT_CHAIN_POLICY_BASIC_CONSTRAINTS.
- Vérifie si le deuxième élément de la chaîne, l’autorité de certification qui a émis le certificat final, est une autorité de certification approuvée pour l’authentification Windows NT. Une autorité de certification est considérée comme approuvée s’il existe dans le magasin de registre du système « NTAuth » trouvé dans l’emplacement du magasin CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE. Si cette vérification échoue, l’autorité de certification n’est pas approuvée et dwError est définie sur CERT_E_UNTRUSTEDCA. Si CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG est défini dans la valeur des indicateurs de de la stratégie de HKEY_LOCAL_MACHINE ProtectedRoots sous-clé, définie par CERT_PROT_ROOT_FLAGS_REGPATH et la vérification ci-dessus échoue, la chaîne est vérifiée pour CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS définie dans dwInfoStatus. Cela est défini s’il existe une contrainte de nom valide pour tous les espaces de noms, y compris UPN. Si la chaîne n’a pas cet état d’informations défini, dwError est défini sur CERT_E_UNTRUSTEDCA.
CERT_CHAIN_POLICY_MICROSOFT_ROOT
(LPCSTR) 7
Vérifie le dernier élément de la première chaîne simple pour une clé publique racine Microsoft. Si cet élément ne contient pas de clé publique racine Microsoft, le membre dwError de la structure CERT_CHAIN_POLICY_STATUS pointée par le paramètre pPolicyStatus est défini sur CERT_E_UNTRUSTEDROOT.

Le dwFlags membre de la structure CERT_CHAIN_POLICY_PARA pointée par le paramètre pPolicyStatus peut contenir l’indicateur de MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG, ce qui entraîne la vérification de la racine de l’application Microsoft « Autorité de certification racine Microsoft 2011 ».

Le dwFlags membre de la structure CERT_CHAIN_POLICY_PARA pointée par le paramètre pPolicyPara peut contenir l’indicateur MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG, ce qui entraîne également la vérification des racines de test Microsoft.

remarque :
Cette stratégie identificateur d’objet (OID) n’effectue pas de vérification de stratégie elle-même, elle est destinée à être utilisée conjointement avec d’autres stratégies.
CERT_CHAIN_POLICY_EV
(LPCSTR) 8
Spécifie que la validation étendue des certificats est effectuée.

Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Cette valeur n’est pas prise en charge.
CERT_CHAIN_POLICY_SSL_F12
(LPCSTR) 9
Vérifie si des certificats de la chaîne ont un chiffrement faible ou si la conformité des certificats racines tiers et fournissent une chaîne d’erreur. Le pvExtraPolicyStatus membre de la structure CERT_CHAIN_POLICY_STATUS pointée par le paramètre pPolicyStatus doit pointer vers SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS, qui est mis à jour avec les résultats des vérifications de conformité du programme racine et de chiffrement faible.

Avant d’appeler, le cbSize membre de la structure CERT_CHAIN_POLICY_STATUS pointée par le paramètre pPolicyStatus doit être défini sur une valeur supérieure ou égale à sizeof(SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS).

Le membre dwError dans CERT_CHAIN_POLICY_STATUS structure pointée par le paramètre pPolicyStatus sera défini sur TRUST_E_CERT_SIGNATURE pour le chiffrement faible potentiel et défini sur CERT_E_UNTRUSTEDROOT pour les racines tierces non conformes au programme racine Microsoft.

Windows 10, version 1607, Windows Server 2016, Windows 10, version 1511 avec KB3172985, Windows 10 RTM avec KB3163912, Windows 8.1 et Windows Server 2012 R2 avec KB3163912 et Windows 7 avec SP1 et Windows Server 2008 R2 SP1 avec KB3161029

[in] pChainContext

Pointeur vers une structure CERT_CHAIN_CONTEXT qui contient une chaîne à vérifier.

[in] pPolicyPara

Pointeur vers une structure CERT_CHAIN_POLICY_PARA qui fournit les critères de vérification de stratégie pour la chaîne. Les dwFlags membre de cette structure peuvent être définis pour modifier le comportement de vérification de stratégie par défaut.

En outre, les paramètres spécifiques à la stratégie peuvent également être transmis dans le membre pvExtraPolicyPara de la structure.

[in, out] pPolicyStatus

Pointeur vers une structure CERT_CHAIN_POLICY_STATUS où les informations d’état sur la chaîne sont retournées. L’état supplémentaire spécifique à l’OID peut être retourné dans le pvExtraPolicyStatus membre de cette structure.

Valeur de retour

La valeur de retour indique si la fonction a pu vérifier la stratégie, elle n’indique pas si la vérification de la stratégie a échoué ou passée.

Si la chaîne peut être vérifiée pour la stratégie spécifiée, est retournée et le membre dwError du pPolicyStatus est mis à jour. Une dwError de 0 (ERROR_SUCCESS ou S_OK) indique que la chaîne satisfait à la stratégie spécifiée.

Si la chaîne ne peut pas être validée, la valeur de retour est TRUE et vous devez vérifier le paramètre pPolicyStatus pour l’erreur réelle.

Une valeur de FALSE indique que la fonction n’a pas pu vérifier la stratégie.

Remarques

Un membre dwError de la structure CERT_CHAIN_POLICY_STATUS pointée par pPolicyStatus peut s’appliquer à un élément de chaîne unique, à une chaîne simple ou à un contexte de chaîne entier. Si dwError s’applique à l’ensemble du contexte de chaîne, les lChainIndex et les membres lElementIndex de la structure CERT_CHAIN_POLICY_STATUS sont définis sur . Si dwError s’applique à une chaîne simple complète, lElementIndex est défini sur –1 et lChainIndex est défini sur l’index de la première chaîne ayant une erreur. Si dwError s’applique à un seul élément de certificat, lChainIndex et lElementIndex indexer le premier certificat ayant l’erreur.

Pour obtenir l’élément de certificat, utilisez cette syntaxe :

pChainContext->rgpChain[lChainIndex]->rgpElement[lElementIndex];

Utilisez la fonction CertGetCertificateChain pour activer et effectuer la vérification de la révocation des certificats. La fonction CertVerifyCertificateChainPolicy ne vérifie pas si les certificats de la chaîne de certificats sont révoqués.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2003 [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête wincrypt.h
bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

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

fonctions de vérification de la chaîne de certificats