Compartir a través de


Validación manual de credenciales de Schannel

De forma predeterminada, Schannel valida el certificado de servidor llamando a la función WinVerifyTrust ; Sin embargo, si ha deshabilitado esta característica con la marca ISC_REQ_MANUAL_CRED_VALIDATION, debe validar el certificado proporcionado por el servidor que intenta establecer su identidad.

Para validar manualmente el certificado de servidor, primero debe obtenerlo. Use la función QueryContextAttributes (General) y especifique el valor del atributo SECPKG_ATTR_REMOTE_CERT_CONTEXT. Este atributo devuelve una estructura CERT_CONTEXT con la cadena de certificados proporcionada por el servidor. Esta cadena de certificados contiene el certificado hoja. Se denomina certificado hoja porque es el último certificado de la cadena de certificados y está más alejado del certificado raíz. La ordenación de certificados en el búfer de contexto de SSPI no implica ninguna relación de encadenamiento de certificados.

Con el certificado hoja debe comprobar lo siguiente:

  • La cadena de certificados está completa y la raíz es un certificado de una entidad de certificación (CA) de confianza.
  • La hora actual no supera las fechas de inicio y finalización de cada uno de los certificados de la cadena de certificados.
  • No se ha revocado ninguno de los certificados de la cadena de certificados.
  • La profundidad del certificado hoja no es más profunda que la profundidad máxima permitida especificada en la extensión de certificado. Esta comprobación solo es necesaria si hay una profundidad especificada.
  • El uso del certificado es correcto, por ejemplo, no se debe usar un certificado de cliente para autenticar un servidor.
  • Para la autenticación del servidor, la identidad del servidor contenida en el certificado hoja del servidor coincide con el servidor al que el cliente intenta ponerse en contacto. Normalmente, el cliente coincidirá con algún elemento del campo Nombre del firmante del certificado con la dirección IP o el nombre DNS del servidor.