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 10 y versiones anteriores, como se indica.

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 subclaves y entradas del Registro que se describen en este artículo le ayudan a administrar y solucionar problemas del SSP de SChannel, 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 editar el registro directamente, use directiva de grupo u otras herramientas de Windows, como Microsoft Management Console (MMC). Si tienes que modificar el registro, ten mucha precaución. Si solo quiere permitir TLS 1.2, seleccione solo los conjuntos de cifrado que admiten TLS 1.2 para la plataforma específica.

Nota

No se recomienda deshabilitar los componentes de SChannel a través de la configuración del Registro y ha quedado en desuso oficialmente para invocar un comportamiento determinado de los componentes criptográficos.

Registro de SChannel

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

Decimal o Hexadecimal Eventos de registro de SChannel
0 Sin 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

Esta entrada no existe en el registro de forma predeterminada. El valor predeterminado es que se admiten los cuatro métodos de asignación de certificados que se muestran a continuación.

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

De forma predeterminada, el proveedor de Schannel usará los cuatro métodos de asignación de certificados siguientes, enumerados en orden de preferencia:

  1. Asignación de certificados de Kerberos service-for-user (S4U)
  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

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

Ruta del Registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

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 controla la cantidad de tiempo en milisegundos que tarda el sistema operativo en expirar las entradas de caché del lado del cliente. Un valor de 0 desactiva la caché con conexión segura. Esta entrada no existe en el registro de forma predeterminada.

La primera vez que se conecta un cliente 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.

A partir de Windows Server 2008 y Windows Vista, el tiempo de caché de cliente predeterminado es de 10 horas.

Ruta 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 Servicios de federación de Active Directory (AD FS) (AD FS) y web Application Proxy (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:

  • 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 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. Dado que SNI y CCS permiten que IIS se escale a miles de sitios web que potencialmente tienen miles de certificados de servidor, establecer este comportamiento para que se habilite de forma predeterminada puede provocar problemas de rendimiento.

Versiones aplicables: todas las versiones que comienzan por Windows Server 2012 y Windows 8.

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

Agregue la siguiente clave:

"EnableOcspStaplingForSni"=dword:00000001

Para deshabilitarlo, establezca el valor DWORD en 0:

"EnableOcspStaplingForSni"=dword:000000000

Nota

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

FIPSAlgorithmPolicy

Esta entrada controla el cumplimiento del Estándar federal de procesamiento de información (FIPS). El valor predeterminado es 0.

Versiones aplicables: todas las versiones que comienzan por Windows Server 2012 y Windows 8.

Ruta de acceso del Registro: HKLM SYSTEM\CurrentControlSet\Control\LSA

Conjuntos de cifrado FIPS de Windows Server: consulte Conjuntos de cifrado y protocolos admitidos en Schannel SSP.

Códigos hash

Los algoritmos hash TLS/SSL deben controlarse mediante la configuración del orden del conjunto de cifrado. Consulte Configuring TLS Cipher Suite Order (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 de la cadena de certificados 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 podría intentar asignar repetidamente el mismo nombre del emisor, 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 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 de la cadena de certificados 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 podría intentar asignar repetidamente el mismo nombre del emisor, 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 intentará asignar de nuevo 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 del Registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

Tamaños de clave keyExchangeAlgorithm

Es posible que estas entradas enumeradas a continuación no existan en el Registro de forma predeterminada y se deben crear manualmente. Para habilitar un algoritmo específico, cree una clave del Registro denominada Enabled en la ruta de acceso del Registro correspondiente con un valor DWORD de 1. Esto también se puede deshabilitar estableciendo el valor DWORD en 0. Se recomienda usar 2048 bits como mínimo para longitudes de bits de clave de cliente y servidor.

El uso de algoritmos de intercambio de claves debe controlarse configurando el 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 crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no está configurado, 1024 bits será el mínimo.

Para especificar un intervalo máximo admitido de Diffie-Hellman longitud de bits de clave para el cliente TLS, cree una entrada ClientMaxKeyBitLength . Después de crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no está configurado, no se aplica un máximo.

Para especificar la longitud de bits de clave Diffie-Hellman para el servidor TLS predeterminado, cree una entrada ServerMinKeyBitLength . Después de crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no está configurado, 2048 bits será el valor predeterminado.

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 elementos almacenados en la caché. Al establecer MaximumCacheSize en 0 se deshabilita la caché de sesión del lado del servidor y se evita volver a conectarse. Al aumentar MaximumCacheSize por encima de los valores predeterminados, se hace que Lsass.exe consuma memoria adicional. Cada elemento de caché de sesión normalmente requiere 2 KB 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 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 fragmentados 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.

Al establecer el valor en 0x0, los mensajes fragmentados no se procesan y harán que se produzca 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^24-1 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 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 en Windows Server 2008 para analizar mensajes de protocolo de enlace TLS/SSL fragmentados.

Ruta 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 crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no está configurado, el valor predeterminado será 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 crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no está configurado, el valor predeterminado será 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 crear la entrada, cambie el valor DWORD a la longitud de bits deseada. Si no está configurado, el valor predeterminado será 0x8000 bytes.

SendTrustedIssuerList

Esta entrada controla la marca que se usa cuando se envía la lista de emisores de confianza. En el caso de los servidores que confían en cientos de entidades de certificación para la autenticación del cliente, hay demasiados emisores para que el servidor pueda enviarlos todos al equipo cliente cuando se solicita la autenticación del cliente. En esta situación, se puede establecer esta clave del registro y en lugar de enviar una lista parcial, Schannel SSP no enviará ninguna lista al cliente.

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 del 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 encadene a una de las CA del servidor. Al configurar el servidor para que no envíe una lista de emisores de confianza, Internet Explorer enviará todos los certificados.

Esta entrada no existe en el registro de forma predeterminada.

Comportamiento predeterminado de enviar lista de emisores de confianza

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

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

Ruta del Registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

ServerCacheTime

Esta entrada controla la cantidad de tiempo en milisegundos que tarda el sistema operativo en expirar las entradas de caché del lado del servidor. Un valor de 0 deshabilita la caché de sesión del lado del servidor y evita volver a conectarse. 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 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 SCH_CREDENTIALS o estructura de SCHANNEL_CRED 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 de SCH_CREDENTIALS , Schannel SSP puede negociar esta versión de protocolo con un par compatible.
  • Deshabilitado de forma predeterminada: a menos que el llamador de SSPI solicite explícitamente esta versión de protocolo mediante la estructura de SCHANNEL_CRED en desuso, Schannel SSP no negociará esta versión del protocolo.
  • 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.

El administrador del sistema puede invalidar la configuración predeterminada de la versión del protocolo TLS y SSL mediante la creación de valores del Registro DWORD "Enabled" y "DisabledByDefault". 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 compatible del protocolo TLS o SSL en el estado Enabled , cree un valor del Registro DWORD denominado "Enabled" con un valor de entrada de "1" y un valor del Registro DWORD denominado "DisabledByDefault" con un valor de "0", 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 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 de protocolo TLS o SSL compatible en el estado Deshabilitado de forma predeterminada , cree valores del Registro DWORD denominados "Enabled" y "DisabledByDefault" con un valor de "0" o "1" en la subclave específica de la versión correspondiente. En el ejemplo siguiente se muestra el servidor TLS 1.0 establecido en el estado Deshabilitado de forma predeterminada :

Captura de pantalla de Invalidación deshabilitada de forma predeterminada en la configuración del Registro de Windows Server para TLS 1.0 del lado servidor.

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 cero, 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.

El cambio de una versión de protocolo TLS o SSL (D)a Deshabilitado de forma predeterminada o el 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 habilitadas (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 a AcquireCredentialsHandle . (D) Las aplicaciones y servicios de servidor y cliente 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.