Configuración del Registro de Seguridad de la capa de transporte (TLS)

En este artículo se explica la información de configuración del registro admitida para la implementación de Windows del protocolo Seguridad de la capa de transporte (TLS) y el protocolo Capa de sockets seguros (SSL) a través del proveedor de soporte técnico de seguridad (SSP) de SChannel. Las entradas y las subclaves del registro siguientes pueden ayudarle a administrar y solucionar problemas de SChannel SSP, específicamente los protocolos TLS y SSL.

Precaución

Esta información se proporciona como una referencia para usar cuando estés solucionando problemas o comprobando que se aplica la configuración necesaria. Te recomendamos que no modifiques directamente el registro a menos que no haya ninguna otra alternativa. El editor del registro y el sistema operativo de Windows no validan las modificaciones del registro antes de que se apliquen. Como resultado, se pueden almacenar valores incorrectos y esto puede producir errores irrecuperables en el sistema. Cuando sea posible, en lugar de modificar el registro directamente, usa la directiva de grupo u otras herramientas de Windows, como Microsoft Management Console (MMC). Si tienes que modificar el registro, ten mucha precaución.

Registro de SChannel

Hay ocho niveles de registro para los eventos de SChannel guardados en el registro de eventos del sistema y visibles mediante el Visor de eventos. Esta ruta de acceso del Registro se almacena en en la clave EventLogging con un valor DWORD establecido en HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL 1.

Decimal o hexadecimal Eventos de registro de SChannel
0 No hay eventos
1 Eventos de error
2 Eventos de advertencia
3 Eventos de error y advertencia
4 Eventos informativos y correctos
5 Eventos de error, informativos y correctos
6 Eventos de advertencia, informativos y correctos
7 Eventos de error, advertencia, informativos y correctos

Nota:

Debe reiniciar el dispositivo después de cambiar el nivel de registro de SChannel.

CertificateMappingMethods

Cuando una aplicación de servidor requiere la autenticación del cliente, SChannel intenta asignar automáticamente el certificado que suministró el equipo cliente a una cuenta de usuario. Puedes autenticar a los usuarios que inician sesión con un certificado de cliente creando asignaciones, que relacionan la información del certificado con una cuenta de usuario de Windows.

Después de crear y habilitar una asignación de certificado, cada vez que un cliente presenta un certificado de cliente, la aplicación del servidor asocia automáticamente ese usuario a la cuenta de usuario de Windows correspondiente.

En la mayoría de los casos, un certificado se asigna a una cuenta de usuario de dos formas:

  • Se asigna un único certificado a una única cuenta de usuario (asignación uno a uno).
  • Se asignan varios certificados a una única cuenta de usuario (asignación de varios a uno).

El proveedor SChannel usa cuatro métodos de asignación de certificados:

  1. Asignación de servicio para usuario (S4U) de Kerberos (habilitada de forma predeterminada)
  2. Asignación de nombre principal de usuario
  3. Asignación uno a uno (también conocida como asignación sujeto/emisor)
  4. Asignación de varios a uno

Ruta de acceso del registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Nombre de la entrada DWORD Habilitado de forma predeterminada
Asunto o emisor 0x000000001 No
Emisor 0x000000002 No
UPN 0x000000004 No
S4U2Self 0x000000008
S4U2Self explícito 0x000000010

Versiones aplicables: tal como se designa en la lista Se aplica a la lista al principio de este artículo.

Ciphers

Los cifrados TLS/SSL deben controlarse configurando el orden del conjunto de cifrado. Para obtener más información, consulte Configuración del pedido del conjunto de cifrado TLS.

Para obtener información sobre los pedidos predeterminados del conjunto de cifrado que usa el SSP de SChannel, consulte Conjuntos de cifrado en TLS/SSL (SChannel SSP).

CipherSuites

Para más información, consulte Configuración del conjunto de cifrado TLS/SSL mediante la directiva de grupo, MDM o PowerShell.

Para obtener información sobre los pedidos predeterminados del conjunto de cifrado que usa el SSP de SChannel, consulte Conjuntos de cifrado en TLS/SSL (SChannel SSP).

ClientCacheTime

Esta entrada especifica la duración del elemento de caché de sesión TLS de cliente en milisegundos. A partir de Windows Server 2008 y Windows Vista, el tiempo predeterminado es de 10 horas. Un valor de 0 desactiva el almacenamiento en caché de sesión TLS en el cliente.

La primera vez que un cliente se conecta a un servidor a través de SChannel SSP, se lleva a cabo un protocolo de enlace TLS/SSL completo. Cuando se completa, se almacenan en la caché de la sesión el secreto maestro, el conjunto de cifrado y los certificados, en su servidor y cliente respectivos.

Ruta de acceso del registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

EnableOcspStaplingForSni

La asociación del Protocolo de estado de certificado en línea (OCSP) permite a un servidor web, como Internet Information Services (IIS), proporcionar el estado de revocación actual de un certificado de servidor cuando envía el certificado de servidor a un cliente durante el protocolo de enlace TLS. Esta característica reduce la carga en servidores OCSP porque el servidor web puede almacenar en caché el estado OCSP actual del certificado de servidor y enviarlo a varios clientes web. Sin esta característica, cada cliente web intentaría recuperar el estado OCSP actual del certificado de servidor del servidor OCSP. Esto generaría una carga elevada en ese servidor OCSP.

Además de IIS, los servicios web a través de http.sys también pueden beneficiarse de esta configuración, incluidos los Servicios de federación de Active Directory (AD FS) (AD FS) y Proxy de aplicación web (WAP).

De forma predeterminada, la compatibilidad con OCSP está habilitada para los sitios web de IIS que tienen un enlace seguro simple (SSL/TLS). Sin embargo, esta compatibilidad no está habilitada de forma predeterminada si el sitio web de IIS usa uno de los siguientes tipos de enlaces SSL/TLS o ambos:

  • Requerir la indicación de nombre de servidor
  • Usar almacén de certificados centralizados

En este caso, la respuesta hello del servidor durante el protocolo de enlace TLS no incluye un estado de ocSP grapado de forma predeterminada. Este comportamiento mejora el rendimiento: la implementación de asociación de OCSP de Windows se escala a cientos de certificados de servidor. Sin embargo, la indicación de nombre de servidor (SNI) y el almacén de certificados central (CCS) permiten que IIS se escale a miles de sitios web que potencialmente tienen miles de certificados de servidor, por lo que habilitar la asociación OCSP para enlaces CCS podría provocar problemas de rendimiento.

Versiones aplicables: todas las versiones a partir de Windows Server 2012 y Windows 8.

Ruta de acceso del registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Añada la siguiente clave:

"EnableOcspStaplingForSni"=dword:00000001

Para deshabilitarlo, establezca el valor DWORD en 0:

"EnableOcspStaplingForSni"=dword:00000000

Nota:

La habilitación de esta clave del registro tiene un posible impacto en el rendimiento.

Códigos hash

Los algoritmos hash TLS/SSL deben controlarse mediante la configuración del orden del conjunto de cifrado. Consulte Configuración del pedido del conjunto de cifrado TLS para obtener más información.

IssuerCacheSize

Esta entrada controla el tamaño de la memoria caché del emisor y se usa con la asignación del emisor. SChannel SSP intenta asignar todos los emisores en la cadena de certificado del cliente, no solo el emisor directo del certificado de cliente. Cuando los emisores no se asignan a una cuenta, que es el caso típico, el servidor puede intentar asignar el mismo nombre de emisor una y otra vez, cientos de veces por segundo.

Para evitar esto, el servidor tiene una caché negativa, por lo que si un nombre del emisor no se asigna a una cuenta, se agrega a la memoria caché y el SSP de SChannel no intenta volver a asignar el nombre del emisor hasta que expire la entrada de caché. Esta entrada del registro especifica el tamaño de la caché. Esta entrada no existe en el registro de forma predeterminada. El valor predeterminado es 100.

Versiones aplicables: todas las versiones a partir de Windows Server 2008 y Windows Vista.

Ruta de acceso del registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

IssuerCacheTime

Esta entrada controla la longitud del intervalo de tiempo de espera de la caché en milisegundos. SChannel SSP intenta asignar todos los emisores en la cadena de certificado del cliente, no solo el emisor directo del certificado de cliente. En caso de que los emisores no se asignen a una cuenta, que es el caso típico, el servidor puede intentar asignar el mismo nombre de emisor una y otra vez, cientos de veces por segundo.

Para evitar esto, el servidor tiene una caché negativa, por lo que si un nombre del emisor no se asigna a una cuenta, se agrega a la memoria caché y el SSP de SChannel no intenta volver a asignar el nombre del emisor hasta que expire la entrada de caché. Esta caché se mantiene por motivos de rendimiento, para que el sistema no siga intentando asignar a los mismos emisores. Esta entrada no existe en el registro de forma predeterminada. El valor predeterminado es 10 minutos.

Versiones aplicables: todas las versiones a partir de Windows Server 2008 y Windows Vista.

Ruta de acceso del registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Tamaños de la clave KeyExchangeAlgorithm

Es posible que estas entradas siguientes no existan en el Registro de forma predeterminada y se deben crear manualmente. El uso de algoritmos de intercambio de claves debe controlarse mediante la configuración del orden del conjunto de cifrado. Para obtener más información sobre los algoritmos criptográficos del conjunto de cifrado TLS/SSL, consulte Conjuntos de cifrado en TLS/SSL (SChannel SSP).

Se agregó en Windows 10, versión 1507 y Windows Server 2016.

Ruta de acceso del registro: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman

Para especificar un intervalo mínimo admitido de longitud de bits de clave Diffie-Hellman para el cliente TLS, cree una ClientMinKeyBitLength entrada. Después de crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no se configura, 1024 bits será el valor mínimo.

Nota

Las curvas elípticas configuradas determinan la intensidad criptográfica del intercambio de claves ECDHE. Para obtener más información, consulte Administración de la Seguridad de la capa de transporte (TLS).

MaximumCacheSize

Esta entrada controla el número máximo de sesiones TLS que se van a almacenar en caché. Al establecer MaximumCacheSize para 0 deshabilitar la memoria caché de sesión del lado servidor para evitar la reanudación de la sesión. Aumentar MaximumCacheSize por encima de los valores predeterminados hace que Lsass.exe consumir memoria adicional. Normalmente, cada elemento de la caché de sesión requiere de 2 a 4 KB de memoria. Esta entrada no existe en el registro de forma predeterminada. El valor predeterminado es 20 000 elementos.

Versiones aplicables: todas las versiones a partir de Windows Server 2008 y Windows Vista.

Ruta de acceso del registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Mensajería: análisis de fragmentos

Esta entrada controla el tamaño máximo permitido de un mensaje de protocolo de enlace TLS que se acepta. Los mensajes mayores que el tamaño permitido no se aceptan y se produce un error en el protocolo de enlace TLS. Estas entradas no existen en el registro de forma predeterminada.

Cuando se establece el valor 0x0en , no se procesan los mensajes fragmentados y se produce un error en el protocolo de enlace TLS. Esto hace que los clientes o servidores TLS de la máquina actual no sean compatibles con las RFC de TLS.

El tamaño máximo permitido se puede aumentar hasta 2^16 bytes. Permitir que un cliente o servidor lea y almacene grandes cantidades de datos no comprobados de la red no es una buena idea y consume memoria adicional para cada contexto de seguridad.

Agregado en Windows 7 y Windows Server 2008 R2: hay disponible una actualización que habilita Internet Explorer en Windows XP, en Windows Vista o Windows Server 2008 para analizar los mensajes de protocolo de enlace TLS/SSL fragmentados.

Ruta de acceso del registro: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Messaging

Para especificar un tamaño máximo permitido de mensajes de protocolo de enlace TLS fragmentados que acepta el cliente TLS, cree una MessageLimitClient entrada. Después de crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no está configurado, el valor predeterminado es 0x8000 bytes.

Para especificar un tamaño máximo permitido de mensajes de protocolo de enlace TLS fragmentados que acepta el servidor TLS cuando no hay autenticación de cliente, cree una MessageLimitServer entrada. Después de crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no se configura, el valor predeterminado es de 0x4000 bytes.

Para especificar un tamaño máximo permitido de mensajes de protocolo de enlace TLS fragmentados que el servidor TLS acepta cuando hay autenticación de cliente, cree una MessageLimitServerClientAuth entrada. Después de crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no se configura, el valor predeterminado es de 0x8000 bytes.

SendTrustedIssuerList

Los servidores TLS pueden enviar una lista de los nombres distintivos de entidades de certificación aceptables al solicitar la autenticación de cliente. Esto puede ayudar a los clientes TLS a seleccionar un certificado de cliente TLS adecuado. Los servidores TLS basados en SChannel no envían esta lista de emisores de confianza de forma predeterminada porque expone las autoridades de certificación en las que el servidor confía a observadores pasivos y también aumenta la cantidad de datos intercambiados en el transcurso del protocolo de enlace TLS. Si se establece este valor en 1, los servidores basados en SChannel envían sus listas de emisores de confianza.

No enviar una lista de emisores de confianza puede afectar a lo que envía el cliente cuando se le solicita un certificado de cliente. Por ejemplo, cuando Microsoft Edge recibe una solicitud de autenticación del cliente, solo muestra los certificados de cliente que encadenan hasta una de las entidades de certificación que envía el servidor. Si el servidor no envió una lista, Microsoft Edge mostrará todos los certificados de cliente que están instalados del cliente.

Este comportamiento puede ser conveniente. Por ejemplo, cuando los entornos PKI incluyen certificados cruzados, los certificados de cliente y servidor no tienen la misma ENTIDAD de certificación raíz. Por lo tanto, Microsoft Edge no puede elegir un certificado que encadene a una de las entidades de certificación del servidor. Los clientes TLS pueden ofrecer cualquier certificado de cliente disponible cuando un servidor no envía la lista de emisores de confianza. Esta entrada no existe en el registro de forma predeterminada.

Comportamiento predeterminado para enviar lista de emisores de confianza

Versión de Windows Comportamiento predeterminado
Windows Server 2012, Windows 8 y versiones posteriores FALSO
Windows Server 2008 R2, Windows 7 y versiones anteriores VERDADERO

Versiones aplicables: todas las versiones a partir de Windows Server 2008 y Windows Vista.

Ruta de acceso del registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

ServerCacheTime

Esta entrada especifica la duración del elemento de caché de sesión TLS de servidor en milisegundos. El valor predeterminado es 10 horas. Un valor de 0 desactiva el almacenamiento en caché de sesión TLS en el servidor y evita la reanudación de la sesión. Al aumentar ServerCacheTime por encima de los valores predeterminados, se hace que Lsass.exe consuma memoria adicional. Normalmente, cada elemento de la caché de sesión requiere de 2 a 4 KB de memoria. Esta entrada no existe en el registro de forma predeterminada.

Versiones aplicables: todas las versiones a partir de Windows Server 2008 y Windows Vista.

Ruta de acceso del registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Tiempo de caché de servidor predeterminado: 10 horas

Configuración de la versión del protocolo TLS, DTLS y SSL

SChannel SSP implementa versiones de los protocolos TLS, DTLS y SSL. Las distintas versiones de Windows admiten diferentes versiones de protocolo. Los autores de llamadas SSPI pueden restringir (pero no expandir) el conjunto de versiones TLS y SSL disponibles para todo el sistema que especifican una estructura SCH_CREDENTIALS en la llamada a AcquireCredentialsHandle. Se recomienda que los autores de llamadas de SSPI usen los valores predeterminados del sistema, en lugar de imponer restricciones de versión del protocolo.

Una versión de protocolo TLS o SSL compatible puede existir en uno de los siguientes estados:

  • Habilitado: a menos que el llamador de SSPI deshabilite explícitamente esta versión de protocolo mediante SCH_CREDENTIALS estructura, SSP de SChannel podría negociar esta versión del protocolo con un elemento del mismo nivel compatible.
  • Deshabilitado: SSP de SChannel no negocia esta versión del protocolo independientemente de la configuración que pueda especificar el llamador de SSPI.

Estos valores del registro se configuran por separado para los roles de cliente y servidor de protocolo en las subclaves del registro denominadas con el siguiente formato:

<SSL/TLS/DTLS> <major version number>.<minor version number><Client\Server>

Estas subclaves específicas de la versión se pueden crear en la siguiente ruta de acceso del registro:

  • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

Por ejemplo, estas son algunas rutas de acceso del registro válidas con subclaves específicas de la versión:

  • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client

  • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server

  • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\DTLS 1.2\Client

Para invalidar un valor predeterminado del sistema y establecer una versión compatible del protocolo TLS o SSL en el Enabled estado, cree un valor del Registro DWORD denominado Enabled con un valor de entrada de "1" en la subclave específica de la versión correspondiente.

En el ejemplo siguiente se muestra el cliente TLS 1.0 establecido en el estado Habilitado:

Captura de pantalla de Establecer el lado del cliente de TLS 1.0 en habilitado en la configuración del Registro de Windows Server.

Para invalidar un valor predeterminado del sistema y establecer una versión del protocolo TLS o SSL compatible en el Disabled estado, cambie el valor del Registro DWORD de Enabled a "0" en la subclave específica de la versión correspondiente.

En el ejemplo siguiente se muestra DTLS 1.2 deshabilitado en el registro:

Captura de pantalla de la configuración del Registro de Windows Server para DTLS 1.2 establecida en deshabilitada de forma predeterminada.

Cambiar una versión de protocolo TLS o SSL (D)al Disabled estado podría provocar un error en las llamadas AcquireCredentialsHandle debido a la falta de versiones de protocolo habilitadas en todo el sistema y al mismo tiempo permitidas por determinados autores de llamadas SSPI. Además, reducir el conjunto de versiones TLS Enabled y SSL podría interrumpir la interoperabilidad con sistemas del mismo nivel remoto.

Una vez que se modifica la configuración de la versión del protocolo (D)TLS o SSL, surten efecto en las conexiones establecidas mediante identificadores de credenciales abiertos por llamadas AcquireCredentialsHandle posteriores. Las aplicaciones y servicios de servidor y cliente (D)TLS y SSL tienden a reutilizar los identificadores de credenciales para varias conexiones por motivos de rendimiento. Para que estas aplicaciones vuelvan a adquirir sus identificadores de credenciales, es posible que sea necesario reiniciar una aplicación o un servicio.

Esta configuración del Registro solo se aplica a SChannel SSP y no afecta a ninguna implementación de TLS y SSL de terceros que se pueda instalar en el sistema.

Advertencia

No se recomienda intentar crear o ajustar cualquier configuración del Registro de SChannel que no se detalla explícitamente en este artículo debido a posibles riesgos y consecuencias imprevistas que pueden surgir de configuraciones no admitidas.

Para más información sobre cómo administrar el conjunto de cifrado TLS mediante PowerShell, consulte la referencia de comandos TLS. Si está interesado en administrar la configuración de TLS a través de la directiva de grupo, consulte Configuración del orden de los conjuntos de cifrado TLS mediante una directiva de grupo.