Fonction CertVerifyCertificateChainPolicy (wincrypt.h)

La fonction CertVerifyCertificateChainPolicy vérifie une chaîne de certificats pour vérifier sa validité, y compris sa conformité aux 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. Le membre dwFlags de la structure pointée vers pPolicyPara peut être défini 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 la stratégie de chaîne Authenticode. Le membre pvExtraPolicyPara de la structure pointée vers pPolicyPara peut être défini pour pointer vers une structure AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA .

Le membre pvExtraPolicyStatus 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 membre pvExtraPolicyStatus 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.
Note 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. Itère à travers tous les certificats de la chaîne de vérification d’une szOID_BASIC_CONSTRAINTS ou d’une extension 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 ou END_ENTITY_FLAG attendue spécifiée dans le membre dwFlags de la structure CERT_CHAIN_POLICY_PARA pointée vers le paramètre pPolicyPara . Si aucun indicateur ou les deux ne sont définis, 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, il est vérifié.

Les premiers éléments des chaînes simples restantes (c’est-à-dire les certificats utilisés pour signer la CTL) sont vérifiés comme 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 :
  1. CERT_CHAIN_POLICY_BASE : implémente les vérifications 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 la stratégie par défaut. Pour plus d’informations, consultez CERT_CHAIN_POLICY_BASE.
  2. CERT_CHAIN_POLICY_BASIC_CONSTRAINTS : implémente la stratégie de chaîne de contraintes de base. Le 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.
  3. Vérifie si le deuxième élément de la chaîne, l’autorité de certification qui a émis le certificat de fin, 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 système « NTAuth » situé à 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éfini sur CERT_E_UNTRUSTEDCA. Si CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG est défini dans la valeur Flags de la sous-clé ProtectedRoots de la stratégie HKEY_LOCAL_MACHINE, définie par CERT_PROT_ROOT_FLAGS_REGPATH et que le case activée ci-dessus échoue, la chaîne est vérifiée pour CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS définie dans dwInfoStatus. Cette valeur est définie s’il existait une contrainte de nom valide pour tous les espaces de noms, y compris UPN. Si cette status d’informations n’est pas définie sur la chaîne, dwError a la valeur 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 membre dwFlags de la structure CERT_CHAIN_POLICY_PARA pointée par le paramètre pPolicyStatus peut contenir l’indicateur MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG, ce qui fait que cette fonction case activée pour la racine de l’application Microsoft « Microsoft Root Certificate Authority 2011 ».

Le membre dwFlags de la structure CERT_CHAIN_POLICY_PARA pointée par le paramètre pPolicyPara peut contenir l’indicateur de MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG, ce qui fait que cette fonction case activée également pour les racines de test Microsoft.

Note Cet identificateur d’objet de stratégie (OID) n’effectue aucune vérification de la stratégie en lui-même. Il est destiné à être utilisé 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 les certificats de la chaîne ont un chiffrement faible ou si la conformité des certificats racine tiers et fournit une chaîne d’erreur. Le membre pvExtraPolicyStatus 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 contrôles de conformité du programme racine et de chiffrement faibles.

Avant d’appeler, le membre cbSize 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 de CERT_CHAIN_POLICY_PARA qui fournit les critères de vérification de stratégie pour la chaîne. Le membre dwFlags de cette structure peut être défini 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ù status informations sur la chaîne sont retournées. Vous pouvez retourner des status supplémentaires spécifiques à l’OID dans le membre pvExtraPolicyStatus de cette structure.

Valeur retournée

La valeur de retour indique si la fonction a pu case activée pour la stratégie, elle n’indique pas si la stratégie case activée échoué ou passée.

Si la chaîne peut être vérifiée pour la stratégie spécifiée, TRUE est retourné et le membre dwError de pPolicyStatus est mis à jour. Un 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.

La valeur FALSE indique que la fonction n’a pas pu case activée pour 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 membres lChainIndex et lElementIndex de la structure CERT_CHAIN_POLICY_STATUS sont définis sur –1. Si dwError s’applique à une chaîne simple complète, lElementIndex a la valeur –1 et lChainIndex est défini sur l’index de la première chaîne qui présente une erreur. Si dwError s’applique à un seul élément de certificat, lChainIndex et lElementIndex indexent le premier certificat qui contient l’erreur.

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

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

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

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
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