Compartir a través de


estructura SCHANNEL_CRED (schannel.h)

Nota

La estructura SCHANNEL_CRED está en desuso. En su lugar, debe usar SCH_CREDENTIALS.

La estructura SCHANNEL_CRED contiene los datos de una credencial de Schannel.

Sintaxis

typedef struct _SCHANNEL_CRED {
  DWORD          dwVersion;
  DWORD          cCreds;
  PCCERT_CONTEXT *paCred;
  HCERTSTORE     hRootStore;
  DWORD          cMappers;
  _HMAPPER       **aphMappers;
  struct         _HMAPPER;
  DWORD          cSupportedAlgs;
  ALG_ID         *palgSupportedAlgs;
  DWORD          grbitEnabledProtocols;
  DWORD          dwMinimumCipherStrength;
  DWORD          dwMaximumCipherStrength;
  DWORD          dwSessionLifespan;
  DWORD          dwFlags;
  DWORD          dwCredFormat;
} SCHANNEL_CRED, *PSCHANNEL_CRED;

Miembros

dwVersion

Establézcalo en SCHANNEL_CRED_VERSION.

cCreds

Número de estructuras de la matriz de paCred.

paCred

Matriz de punteros a CERT_CONTEXT estructuras. Cada puntero especifica un certificado que contiene una clave privada que se va a usar para autenticar la aplicación. Normalmente, esta matriz contiene una estructura para cada método de intercambio de claves admitido por la aplicación.

Las aplicaciones cliente suelen pasar una lista vacía y dependen de Schannel para buscar un certificado adecuado o crear un certificado más adelante si es necesario.

hRootStore

Opcional. Válido solo para aplicaciones de servidor. Controle a un almacén de certificados que contenga certificados raíz autofirmados para entidades de certificación (CA) de confianza de la aplicación. Este miembro solo lo usan las aplicaciones del lado servidor que requieren autenticación de cliente.

cMappers

Reservado.

aphMappers

Reservado.

_HMAPPER

cSupportedAlgs

Número de algoritmos de la matriz palgSupportedAlgs.

palgSupportedAlgs

Opcional. Puntero a una matriz de identificadores de algoritmo de ALG_ID que representan los algoritmos admitidos por las conexiones realizadas con credenciales adquiridas mediante esta estructura. Si cSupportedAlgs es cero o palgSupportedAlgs es NULL, Schannel usa los valores predeterminados del sistema.

Actualmente, no se admiten los identificadores de algoritmo CALG_AES, CALG_AES_128y CALG_AES_256.

grbitEnabledProtocols

Opcional. Un DWORD que contiene una cadena de bits que representa los protocolos admitidos por las conexiones realizadas con credenciales adquiridas mediante esta estructura. Si este miembro es cero, Schannel selecciona el protocolo. Para el desarrollo nuevo, las aplicaciones deben establecer grbitEnabledProtocols en cero y usar las versiones de protocolo habilitadas en el sistema de forma predeterminada.

Este miembro solo lo usa el proveedor de protocolos de seguridad unificado de Microsoft paquete de seguridad.

La configuración global del registro del sistema tiene prioridad sobre este valor. Por ejemplo, si SSL3 está deshabilitado en el registro, no se puede habilitar con este miembro.

Este miembro puede contener cualquiera de las marcas siguientes.

Valor Significado
SP_PROT_PCT1_SERVER
0x00000001
Servidor de la tecnología de comunicaciones privadas 1.0.
Nota obsoleto.
 
SP_PROT_PCT1_CLIENT
0x00000002
Cliente de Private Communications Technology 1.0.
Nota obsoleto.
 
SP_PROT_SSL2_SERVER
0x00000004
Servidor capa de sockets seguros 2.0. Reemplazado por SP_PROT_TLS1_SERVER.
importantes las marcas Capa de sockets seguros 2.0 y Seguridad de la capa de transporte 1.2 son mutuamente excluyentes.
 
Windows 10, versión 1607 y Windows Server 2016.: finaliza el soporte técnico de .
SP_PROT_SSL2_CLIENT
0x00000008
Lado cliente de Capa de sockets seguros 2.0. Reemplazado por SP_PROT_TLS1_CLIENT.
importantes las marcas Capa de sockets seguros 2.0 y Seguridad de la capa de transporte 1.2 son mutuamente excluyentes.
 
Windows 10, versión 1607 y Windows Server 2016.: finaliza el soporte técnico de .
SP_PROT_SSL3_SERVER
0x00000010
Servidor capa 3.0 de sockets seguros.
SP_PROT_SSL3_CLIENT
0x00000020
Lado cliente de Capa de sockets seguros 3.0.
SP_PROT_TLS1_SERVER
0x00000040
Seguridad de la capa de transporte 1.0 del lado servidor.
SP_PROT_TLS1_CLIENT
0x00000080
Lado cliente de Seguridad de la capa de transporte 1.0.
SP_PROT_TLS1_0_SERVER
SP_PROT_TLS1_SERVER
Seguridad de la capa de transporte 1.0 del lado servidor.
SP_PROT_TLS1_0_CLIENT
SP_PROT_TLS1_CLIENT
Lado cliente de Seguridad de la capa de transporte 1.0.
SP_PROT_TLS1_1_SERVER
0x00000100
Seguridad de la capa de transporte 1.1 del lado servidor.
SP_PROT_TLS1_1_CLIENT
0x00000200
Lado cliente de Seguridad de la capa de transporte 1.1.
SP_PROT_TLS1_2_SERVER
0x00000400
Seguridad de la capa de transporte 1.2 del lado servidor.
importantes las marcas Capa de sockets seguros 2.0 y Seguridad de la capa de transporte 1.2 son mutuamente excluyentes.
 
SP_PROT_TLS1_2_CLIENT
0x00000800
Cliente de seguridad de la capa de transporte 1.2.
importantes las marcas Capa de sockets seguros 2.0 y Seguridad de la capa de transporte 1.2 son mutuamente excluyentes.
 
SP_PROT_TLS1_3_SERVER
0x00001000
Seguridad de la capa de transporte 1.3 del lado servidor.
importantes las marcas Capa de sockets seguros 2.0 y Seguridad de la capa de transporte 1.2 son mutuamente excluyentes.
 
SP_PROT_TLS1_3_CLIENT
0x00002000
Lado cliente de Seguridad de la capa de transporte 1.3.
importantes las marcas Capa de sockets seguros 2.0 y Seguridad de la capa de transporte 1.3 son mutuamente excluyentes.
 
SP_PROT_DTLS_SERVER
0x00010000
Lado del servidor seguridad de la capa de transporte de datagramas.

Windows 8 y Windows Server 2012: se ha agregado compatibilidad.

SP_PROT_DTLS_CLIENT
0x00020000
Lado cliente de Seguridad de la capa de transporte de datagramas.

Windows 8 y Windows Server 2012: se ha agregado compatibilidad.

SP_PROT_DTLS1_0_SERVER
SP_PROT_DTLS1_SERVER
Seguridad de la capa de transporte de datagramas 1.0 del lado servidor.

Windows 8 y Windows Server 2012: se ha agregado compatibilidad.

SP_PROT_DTLS1_0_CLIENT
SP_PROT_DTLS1_CLIENT
Lado cliente de Seguridad de la capa de transporte de datagramas 1.0.

Windows 8 y Windows Server 2012: se ha agregado compatibilidad.

SP_PROT_DTLS1_2_SERVER
0x00040000
Servidor de seguridad de la capa de transporte de datagramas 1.2.

Windows 10, versión 1607 y Windows Server 2016.: compatibilidad agregada.

SP_PROT_DTLS1_2_CLIENT
0x00080000
Lado cliente de Seguridad de la capa de transporte de datagramas 1.2.

Windows 10, versión 1607 y Windows Server 2016.: compatibilidad agregada.

SP_PROT_DTLS1_X_SERVER
Seguridad de la capa de transporte de datagramas en todas las versiones compatibles del lado servidor.

Windows 10, versión 1607 y Windows Server 2016.: compatibilidad agregada.

SP_PROT_DTLS1_X_CLIENT
Seguridad de la capa de transporte de datagramas en todas las versiones compatibles del lado cliente.

Windows 10, versión 1607 y Windows Server 2016.: compatibilidad agregada.

dwMinimumCipherStrength

Nivel mínimo de cifrado masivo, en bits, permitido para las conexiones.

Si este miembro es cero, Schannel usa el valor predeterminado del sistema. Si este miembro es –1, solo se habilitan los conjuntos de cifrado SSL3/TLS MAC (también conocidos como cifrado NULL).

dwMaximumCipherStrength

Intensidad máxima del cifrado masivo, en bits, permitida para las conexiones.

Si este miembro es cero, Schannel usa el valor predeterminado del sistema.

Si este miembro es –1, solo se habilitan los conjuntos de cifrado SSL3/TLS MAC (también conocidos como cifrado NULL). En este caso, dwMinimumCipherStrength debe establecerse en –1.

dwSessionLifespan

Número de milisegundos que Schannel mantiene la sesión en su caché de sesiones. Una vez transcurrido este tiempo, las nuevas conexiones entre el cliente y el servidor requieren una nueva sesión de Schannel. Establezca el valor de este miembro en cero para usar el valor predeterminado de 360000000 milisegundos (diez horas).

dwFlags

Contiene marcas de bits que controlan el comportamiento de Schannel. Este miembro puede ser cero o una combinación de los siguientes valores.

Valor Significado
SCH_CRED_AUTO_CRED_VALIDATION
0x00000020
Solo cliente.

Esta marca es lo contrario de SCH_CRED_MANUAL_CRED_VALIDATION y forma parte del comportamiento predeterminado de Schannel.

SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE
0x00020000
Indique a Schannel que pase la marca CERT_CHAIN_CACHE_ONLY_URL_RETRIEVAL a la función CertGetCertificateChain al validar las credenciales especificadas durante una llamada a AcquireCredentialsHandle (Schannel).

Windows Server 2003 y Windows XP/2000: Esta marca no se admite.

SCH_CRED_DISABLE_RECONNECTS
0x00000080
Solo servidor.

Si se establece esta marca, los protocolos de enlace completos realizados con esta credencial no permitirán las reconexión. Se crea una entrada de caché, por lo que la sesión se puede reanudar más adelante mediante la función applyControlToken .

SCH_CRED_IGNORE_NO_REVOCATION_CHECK
0x00000800
Al comprobar los certificados revocados, omita CRYPT_E_NO_REVOCATION_CHECK errores. Para obtener restricciones adicionales, vea Comentarios.
SCH_CRED_IGNORE_REVOCATION_OFFLINE
0x00001000
Al comprobar si hay certificados revocados, omita CRYPT_E_REVOCATION_OFFLINE errores. Para obtener restricciones adicionales, vea Comentarios.
SCH_CRED_MANUAL_CRED_VALIDATION
0x00000008
Solo cliente.

Impedir que Schannel valide la cadena de certificados del servidor recibido.

SCH_CRED_NO_DEFAULT_CREDS
0x00000010
Solo cliente.

Impedir que Schannel intente proporcionar automáticamente una cadena de certificados para la autenticación de cliente.

SCH_CRED_NO_SERVERNAME_CHECK
0x00000004
Solo cliente.

Impedir que Schannel compare el nombre de destino proporcionado con los nombres de firmante en certificados de servidor.

SCH_CRED_NO_SYSTEM_MAPPER
0x00000002
Solo servidor.

Impedir que Schannel use las funciones integradas de asignación de certificados del sistema para asignar certificados de cliente a una cuenta de usuario.

SCH_CRED_REVOCATION_CHECK_CHAIN
0x00000200
Al validar una cadena de certificados, compruebe todos los certificados para la revocación. Para obtener restricciones adicionales, vea Comentarios.
SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT
0x00000400
Al validar una cadena de certificados, no compruebe la raíz para la revocación. Para obtener restricciones adicionales, vea Comentarios.
SCH_CRED_REVOCATION_CHECK_END_CERT
0x00000100
Al validar una cadena de certificados, compruebe solo el último certificado para la revocación. Para obtener restricciones adicionales, vea Comentarios.
SCH_CRED_USE_DEFAULT_CREDS
0x00000040
Solo cliente.

Schannel intenta proporcionar automáticamente una cadena de certificados para la autenticación de cliente. Este valor es lo contrario de SCH_CRED_NO_DEFAULT_CREDS.

SCH_SEND_AUX_RECORD
0x00200000
Indique a Schannel que divida los datos que se van a cifrar en dos registros independientes para contrarrestar la debilidad presente en el protocolo SSL/TLS cuando se usa con el conjunto de cifrado simétrico mediante el modo de encadenamiento de bloques de cifrado. Para obtener más información, consulte vulnerabilidad en SSL/TLS podría permitir la divulgación de información.

Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP y Windows XP/2000: No se admite esta marca.

SCH_SEND_ROOT_CERT
0x00040000
Schannel envía el certificado raíz como parte del mensaje de certificado.
Nota El certificado raíz enviado a través de la red por el cliente o servidor Schannel no es de confianza. Debe validarse con un hash de confianza del certificado raíz.
 
SCH_USE_STRONG_CRYPTO
0x00400000
Indica a Schannel que deshabilite algoritmos criptográficos débiles conocidos, conjuntos de cifrado y versiones del protocolo SSL/TLS que, de lo contrario, se pueden habilitar para mejorar la interoperabilidad.
SCH_USE_PRESHAREDKEY_ONLY
0x00800000
Indica a Schannel que seleccione solo conjuntos de cifrado PSK y deshabilite todos los demás conjuntos de cifrado.

dwCredFormat

El modo kernel Schannel admite los siguientes valores.

Windows Server 2008, Windows Vista, Windows Server 2003, Windows XP y Windows XP/2000: Esta marca no se admite y debe ser cero.

Valor Significado
SCH_CRED_FORMAT_CERT_HASH
0x00000001
El miembro paCred de la estructura SCHANNEL_CRED pasada debe ser un puntero a una matriz de bytes de longitud 20 que contenga la huella digital del certificado. Se supone que el certificado está en el almacén "MY" del equipo local.
SCH_CRED_FORMAT_CERT_HASH_STORE
0x00000002
El miembro paCred de la estructura SCHANNEL_CRED apunta a una estructura SCHANNEL_CERT_HASH_STORE.

Observaciones

Las marcas de revocación de certificados siguientes son mutuamente excluyentes.

  • SCH_CRED_REVOCATION_CHECK_CHAIN
  • SCH_CRED_REVOCATION_CHECK_END_CERT
  • SCH_CRED_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT

Para personalizar los informes de errores de revocación de certificados para Schannel, use las marcas siguientes:

  • SCH_CRED_IGNORE_NO_REVOCATION_CHECK
  • SCH_CRED_IGNORE_REVOCATION_OFFLINE

Cuando Schannel comprueba el estado de revocación de una cadena de certificados, estas marcas le indican que omita los errores de CRYPT_E_NO_REVOCATION_CHECK y CRYPT_E_REVOCATION_OFFLINE, respectivamente. Estas marcas se omiten si no se establece ninguna marca de revocación de certificados.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 8.1 [solo aplicaciones de escritorio]
servidor mínimo admitido Windows Server 2012 R2 [solo aplicaciones de escritorio]
encabezado de schannel.h (include Schnlsp.h)

Consulte también

QuerySecurityContextToken