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

Se aplica a Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows 11, Windows 10 y a las versiones anteriores que se indican.

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 HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL en la clave EventLogging con un valor DWORD establecido en 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 de SChannel usa cuatro (4) 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: como se indica en la lista Aplicable a que está 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

La configuración de conjuntos de cifrado TLS/SSL debe realizarse mediante la directiva de grupo, MDM o PowerShell; consulte Configuración del pedido del conjunto de cifrado TLS para obtener más información.

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 esto 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 incluirá un estado de OCSP acoplado 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 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 puede causar 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 memoria caché negativa, por lo que si un nombre de emisor no se asigna a una cuenta, se agrega a la memoria caché y SChannel SSP no intentará 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 memoria caché negativa, por lo que si un nombre de emisor no se asigna a una cuenta, se agrega a la memoria caché y SChannel SSP no intentará 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 que se enumeran a continuación 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.

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

Ruta 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 entrada ClientMinKeyBitLength. Después de haber creado la entrada, cambie el valor DWORD al tamaño que desee. Si no se configura un mínimo, será 1024 bits.

Para especificar un intervalo máximo admitido de longitud de bits de clave Diffie-Hellman para el cliente TLS, cree una entrada ClientMaxKeyBitLength. Después de haber creado la entrada, cambie el valor DWORD al tamaño que desee.

Para especificar la longitud de bits de clave Diffie-Hellman para el servidor TLS predeterminado, cree una entrada ServerMinKeyBitLength. Después de haber creado la entrada, cambie el valor DWORD al tamaño que desee. Si no se configura, 2048 bits será el valor predeterminado.

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).

Para más información sobre los algoritmos criptográficos del conjunto de cifrado TLS/SSL, consulte:

MaximumCacheSize

Esta entrada controla el número máximo de sesiones TLS que se van a almacenar en caché. Al establecer MaximumCacheSize en 0 se deshabilita la caché de sesión del lado del servidor para evitar que se reanude la sesión. Al aumentar MaximumCacheSize 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. 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 los mensajes de protocolo de enlace TLS que se aceptarán. Los mensajes mayores que el tamaño permitido no se aceptarán y se producirá un error en el protocolo de enlace TLS. Estas entradas no existen en el registro de forma predeterminada.

Cuando se establece el valor en 0x0, no se procesan los mensajes fragmentados y se producirá 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 sin comprobar provenientes de la red no es una buena idea, y consumirá 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 aceptará el cliente TLS, cree una entrada MessageLimitClient. Después de haber creado la entrada, cambie el valor DWORD al tamaño que desee. Si no se configura, el valor predeterminado es de 0x8000 bytes.

Para especificar un tamaño máximo permitido de mensajes de protocolo de enlace TLS fragmentados que el servidor TLS aceptará cuando no haya autenticación de cliente, cree una entrada MessageLimitServer. Después de haber creado la entrada, cambie el valor DWORD al tamaño que desee. 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 aceptará cuando haya autenticación de cliente, cree una entrada MessageLimitServerClientAuth. Después de haber creado la entrada, cambie el valor DWORD al tamaño que desee. Si no se configura, el valor predeterminado es de 0x8000 bytes.

SendTrustedIssuerList

Los servidores TLS pueden enviar una lista de los nombres completos de las autoridades 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.

El 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 Internet Explorer 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, Internet Explorer mostrará todos los certificados de cliente que están instalados en el cliente.

Este comportamiento puede ser conveniente. Por ejemplo, cuando los entornos PKI incluyen certificados cruzados, los certificados de cliente y servidor no tendrán la misma CA raíz, por lo tanto, Internet Explorer no puede elegir un certificado que se encadene con una de las CA 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 8, Windows Server 2012 o 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 autor de la llamada de SSPI deshabilite explícitamente esta versión de protocolo mediante la estructura SCH_CREDENTIALS, SChannel SSP puede negociar esta versión de protocolo con un nodo del mismo nivel compatible.
  • Deshabilitado: SChannel SSP no negociará esta versión del protocolo independientemente de la configuración que pueda especificar el autor de la llamada 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:

Número de versión principal de <SSL/TLS/DTLS><>.< Número de versión secundaria>< 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 de protocolo TLS o SSL compatible en el estado Habilitado, cree un valor del Registro DWORD denominado "Enabled", con un valor 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:

Screenshot of Set TLS 1.0 client-side to enabled in Windows Server registry setting.

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

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

Screenshot of Windows Server registry setting for DTLS 1.2 set to disabled by default.

El cambio de una versión de protocolo TLS o SSL al estado Deshabilitado puede provocar un error en las llamadas AcquireCredentialsHandle debido a la falta de versiones de protocolo habilitadas para todo el sistema y al mismo tiempo permitidas por determinados autores de llamadas SSPI. Además, reducir el conjunto de versiones Enabled (D)TLS y SSL puede interrumpir la interoperabilidad con pares remotos.

Una vez modificada 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 las llamadas posteriores AcquireCredentialsHandle. 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 se requiera un reinicio de aplicación o servicio.

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