Función CertVerifyCertificateChainPolicy (wincrypt.h)
La función CertVerifyCertificateChainPolicy comprueba una cadena de certificados para comprobar su validez, incluido su cumplimiento con los criterios de directiva de validez especificados.
Sintaxis
BOOL CertVerifyCertificateChainPolicy(
[in] LPCSTR pszPolicyOID,
[in] PCCERT_CHAIN_CONTEXT pChainContext,
[in] PCERT_CHAIN_POLICY_PARA pPolicyPara,
[in, out] PCERT_CHAIN_POLICY_STATUS pPolicyStatus
);
Parámetros
[in] pszPolicyOID
Las estructuras de directivas de cadena de comprobación predefinidas actuales se enumeran en la tabla siguiente.
Valor | Significado |
---|---|
CERT_CHAIN_POLICY_BASE (LPCSTR) 1 |
Implementa las comprobaciones de comprobación de directivas de cadena base. El dwFlags miembro de la estructura a la que apunta pPolicyPara se puede establecer para modificar el comportamiento de comprobación de directivas predeterminado. |
CERT_CHAIN_POLICY_AUTHENTICODE (LPCSTR) 2 |
Implementa las comprobaciones de comprobación de directivas de cadena Authenticode. El miembro pvExtraPolicyPara de la estructura a la que apunta pPolicyPara puede establecerse para que apunte a una estructura de AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA. El |
CERT_CHAIN_POLICY_AUTHENTICODE_TS (LPCSTR) 3 |
Implementa comprobaciones de comprobación de directivas de cadena de marca de tiempo authenticode. El miembro pvExtraPolicyPara de la estructura de datos a la que apunta pPolicyPara puede establecerse para que apunte a una estructura de AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA. El miembro |
CERT_CHAIN_POLICY_SSL (LPCSTR) 4 |
Implementa las comprobaciones de comprobación de directivas de cadena de servidor o cliente SSL. El miembro pvExtraPolicyPara de la estructura de datos a la que apunta pPolicyPara puede establecerse para que apunte a una estructura de SSL_EXTRA_CERT_CHAIN_POLICY_PARA inicializada con criterios de directiva adicionales. Nota: Para diferenciar entre los certificados de autorización de servidor y cliente, la llamada a la función CertGetCertificateChain para obtener el contexto de la cadena debe especificar el tipo de certificado estableciendo el uso esperado. Establezca el uso esperado estableciendo el |
CERT_CHAIN_POLICY_BASIC_CONSTRAINTS (LPCSTR) 5 |
Implementa la directiva de cadena de restricciones básicas. Recorre en iteración todos los certificados de la cadena comprobando una szOID_BASIC_CONSTRAINTS o una extensión de szOID_BASIC_CONSTRAINTS2. Si ninguna extensión está presente, se supone que el certificado tiene una directiva válida. De lo contrario, para el primer elemento de certificado, comprueba si coincide con el CA_FLAG esperado o END_ENTITY_FLAG especificado en el dwFlags miembro de la estructura de CERT_CHAIN_POLICY_PARA a la que apunta el parámetro pPolicyPara. Si no se establecen ninguna o ambas marcas, el primer elemento puede ser una ENTIDAD de certificación o END_ENTITY. Todos los demás elementos deben ser una entidad de certificación (CA). Si PathLenConstraint está presente en la extensión, se comprueba. Los primeros elementos de las cadenas simples restantes (es decir, los certificados usados para firmar el CTL) se comprueban como una END_ENTITY. Si se produce un error en esta comprobación, dwError se establecerá en TRUST_E_BASIC_CONSTRAINTS. |
CERT_CHAIN_POLICY_NT_AUTH (LPCSTR) 6 |
Implementa la directiva de cadena de autenticación de Windows NT, que consta de tres comprobaciones de cadena distintas en el orden siguiente: - CERT_CHAIN_POLICY_BASE: implementa las comprobaciones de comprobación de directivas de cadena base. La LOWORD de dwFlags se puede establecer en pPolicyPara para modificar el comportamiento de comprobación de directivas predeterminado. Para obtener más información, consulte CERT_CHAIN_POLICY_BASE. - CERT_CHAIN_POLICY_BASIC_CONSTRAINTS: implementa la directiva de cadena de restricciones básicas. La HIWORD de dwFlags se puede establecer para especificar si el primer elemento debe ser una ENTIDAD de certificación o END_ENTITY. Para obtener más información, consulte CERT_CHAIN_POLICY_BASIC_CONSTRAINTS. - Comprueba si el segundo elemento de la cadena, la ENTIDAD de certificación que emitió el certificado final, es una ENTIDAD de certificación de confianza para la autenticación de Windows NT. Una ENTIDAD de certificación se considera de confianza si existe en el almacén del registro del sistema "NTAuth" que se encuentra en la ubicación del almacén de CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE. Si se produce un error en esta comprobación, la entidad de certificación no es de confianza y dwError se establece en CERT_E_UNTRUSTEDCA. Si CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG se establece en el Flags valor de la directiva HKEY_LOCAL_MACHINEprotectedRoots subclave, definido por CERT_PROT_ROOT_FLAGS_REGPATH y se produce un error en la comprobación anterior, la cadena se comprueba CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS se establece en dwInfoStatus. Esto se establece si había una restricción de nombre válida para todos los espacios de nombres, incluido UPN. Si la cadena no tiene establecido este estado de información, dwError se establece en CERT_E_UNTRUSTEDCA. |
CERT_CHAIN_POLICY_MICROSOFT_ROOT (LPCSTR) 7 |
Comprueba el último elemento de la primera cadena simple para una clave pública raíz de Microsoft. Si ese elemento no contiene una clave pública raíz de Microsoft, el miembro dwError de la estructura de CERT_CHAIN_POLICY_STATUS a la que apunta el parámetro pPolicyStatus se establece en CERT_E_UNTRUSTEDROOT. El dwFlags miembro de la estructura CERT_CHAIN_POLICY_PARA a la que apunta el parámetro pPolicyStatus puede contener la marca MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG, lo que hace que esta función compruebe en su lugar la raíz de la aplicación de Microsoft "Entidad de certificación raíz de Microsoft 2011". El dwFlags miembro de la estructura CERT_CHAIN_POLICY_PARA a la que apunta el parámetro pPolicyPara puede contener la marca MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG, lo que hace que esta función también compruebe las raíces de prueba de Microsoft. Nota: Esta directiva identificador de objeto (OID) no realiza ninguna comprobación de comprobación de directiva por sí misma, está pensada para usarse junto con otras directivas. |
CERT_CHAIN_POLICY_EV (LPCSTR) 8 |
Especifica que se realiza la validación extendida de certificados. Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Este valor no se admite. |
CERT_CHAIN_POLICY_SSL_F12 (LPCSTR) 9 |
Comprueba si algún certificado de la cadena tiene un cifrado débil o si el cumplimiento de certificados raíz de terceros y proporciona una cadena de error. El miembro pvExtraPolicyStatus de la estructura CERT_CHAIN_POLICY_STATUS a la que apunta el parámetro pPolicyStatus debe apuntar a SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS, que se actualiza con los resultados de las comprobaciones de cumplimiento del programa criptográfico y raíz débiles. Antes de llamar, el cbSize miembro de la estructura CERT_CHAIN_POLICY_STATUS a la que apunta el parámetro pPolicyStatus debe establecerse en un valor mayor o igual que sizeof(SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS). El miembro dwError en CERT_CHAIN_POLICY_STATUS estructura a la que apunta el parámetro pPolicyStatus se establecerá en TRUST_E_CERT_SIGNATURE para una posible criptografía débil y se establecerá en CERT_E_UNTRUSTEDROOT para raíces de terceros que no cumplan el programa raíz de Microsoft. Windows 10, versión 1607, Windows Server 2016, Windows 10, versión 1511 con KB3172985, Windows 10 RTM con KB3163912, Windows 8.1 y Windows Server 2012 R2 con KB3163912 y Windows 7 con SP1 y Windows Server 2008 R2 SP1 con KB3161029 |
[in] pChainContext
Puntero a una estructura de CERT_CHAIN_CONTEXT que contiene una cadena que se va a comprobar.
[in] pPolicyPara
Puntero a una estructura CERT_CHAIN_POLICY_PARA que proporciona los criterios de comprobación de directivas para la cadena. El dwFlags miembro de esa estructura se puede establecer para cambiar el comportamiento de comprobación de directivas predeterminado.
Además, los parámetros específicos de la directiva también se pueden pasar en el miembro pvExtraPolicyPara de la estructura.
[in, out] pPolicyStatus
Puntero a una estructura de CERT_CHAIN_POLICY_STATUS donde se devuelve información de estado en la cadena. El estado adicional específico del OID se puede devolver en el pvExtraPolicyStatus miembro de esta estructura.
Valor devuelto
El valor devuelto indica si la función pudo comprobar la directiva, no indica si se produjo un error en la comprobación de directiva o se ha superado.
Si se puede comprobar la cadena para la directiva especificada, se devuelve 0
(ERROR_SUCCESS o S_OK) indica que la cadena satisface la directiva especificada.
Si no se puede validar la cadena, el valor devuelto se TRUE
y debe comprobar el parámetro pPolicyStatus para el error real.
Un valor de FALSE
indica que la función no pudo comprobar la directiva.
Observaciones
Un miembro dwError de la estructura de CERT_CHAIN_POLICY_STATUS a la que apunta pPolicyStatus se puede aplicar a un único elemento de cadena, a una cadena simple o a un contexto de cadena completo. Si –1
y lChainIndex se establece en el índice de la primera cadena que tiene un error. Si dwError se aplica a un único elemento de certificado, lChainIndex y lElementIndex indexe el primer certificado que tiene el error.
Para obtener el elemento certificate, use esta sintaxis:
pChainContext->rgpChain[lChainIndex]->rgpElement[lElementIndex];
Use la función CertGetCertificateChain
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows XP [aplicaciones de escritorio | Aplicaciones para UWP] |
servidor mínimo admitido | Windows Server 2003 [aplicaciones de escritorio | Aplicaciones para UWP] |
de la plataforma de destino de |
Windows |
encabezado de |
wincrypt.h |
biblioteca de |
Crypt32.lib |
DLL de |
Crypt32.dll |
Consulte también
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS
AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA
CertGetCertificateChain de