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

Se aplica a: Windows Server (Canal semianual), Windows Server 2019, Windows Server 2016 y Windows 10

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 compatibilidad de seguridad (SSP) de Schannel. Las subclaves del Registro y las entradas que se tratan en este tema 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.

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

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

Ciphers

Los cifrados TLS/SSL deben controlarse mediante la configuración del orden del conjunto de cifrado. Para más información, consulte Configuración del orden del conjunto de cifrado TLS.

Para obtener información sobre el orden predeterminado de los conjuntos de cifrado que usa el SSP de Schannel, vea 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 orden del conjunto de cifrado TLS para obtener más información.

Para obtener información sobre el orden predeterminado de los conjuntos de cifrado que usa el SSP de Schannel, vea 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 de acceso del registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

EnableOcspStaplingForSni

El establecimiento de formato del Protocolo de estado de certificado en línea (OCSP) permite que un servidor web, como Internet Information Services (IIS), proporcione 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 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 o ambos 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á de forma predeterminada un estado de grapado OCSP. Este comportamiento mejora el rendimiento: la implementación de estapling ocsp de Windows se escala a cientos de certificados de servidor. Dado que SNI y CCS permiten a IIS escalar a miles de sitios web que potencialmente tienen miles de certificados de servidor, establecer este comportamiento para que esté habilitado de forma predeterminada 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]

Agregue la siguiente clave:

"EnableOcspStaplingForSni"=dword:000000001

Para deshabilitarlo, establezca el valor DWORD en 0:

"EnableOcspStaplingForSni"=dword:000000000

Nota

Habilitar esta clave del Registro tiene un impacto potencial 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 a partir de Windows Server 2012 y Windows 8.

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

Conjuntos de cifrado FIPS de Windows Server: vea Conjuntos de cifrado y protocolos admitidos en SChannel SSP.

Códigos hash

Los algoritmos hash TLS/SSL deben controlarse configurando el orden del conjunto de cifrado. Consulte Configuring TLS Cipher Suite Order (Configuración del orden 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. El SSP de Schannel 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 el mismo nombre de emisor varias veces, 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. El SSP de Schannel intenta asignar todos los emisores en la cadena de certificados del cliente, no solo el emisor directo del certificado de cliente. En el caso de que los emisores no se asignen a una cuenta, que es el caso típico, el servidor podría intentar asignar el mismo nombre de emisor varias veces, cientos de veces por segundo.

Para evitar esto, el servidor tiene una 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á asignar el nombre del emisor de nuevo 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

KeyExchangeAlgorithm: tamaños de clave RSA de cliente

Esta entrada controla los tamaños de clave RSA del cliente.

El uso de algoritmos de intercambio de claves debe controlarse mediante la configuración del orden del conjunto de cifrado.

Se ha agregado Windows 10, versión 1507 y Windows Server 2016.

Ruta de acceso del Registro: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\PKCS

Para especificar un intervalo mínimo admitido de longitud de bits de clave RSA para el cliente TLS, cree una entrada ClientMinKeyBitLength. Esta entrada no existe en el registro de forma predeterminada. 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 longitud de bits de clave RSA para el cliente TLS, cree una entrada ClientMaxKeyBitLength. Esta entrada no existe en el registro de forma predeterminada. 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.

KeyExchangeAlgorithm: Diffie-Hellman de clave

Esta entrada controla el tamaño Diffie-Hellman clave.

El uso de algoritmos de intercambio de claves debe controlarse mediante la configuración del orden del conjunto de cifrado.

Se ha agregado 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 Diffie-Helman de bits de clave para el cliente TLS, cree una entrada ClientMinKeyBitLength. Esta entrada no existe en el registro de forma predeterminada. 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-Helman de bits de clave para el cliente TLS, cree una entrada ClientMaxKeyBitLength. Esta entrada no existe en el registro de forma predeterminada. 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 Diffie-Helman de bits de clave predeterminada para el servidor TLS, cree una entrada ServerMinKeyBitLength. Esta entrada no existe en el registro de forma predeterminada. 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.

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. 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 fragmentados que se aceptarán. No se aceptarán mensajes mayores que el tamaño permitido 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 provocarán un error en el protocolo de enlace TLS. Esto hace que los clientes o servidores TLS de la máquina actual no cumplan 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 noverificados de la red no es una buena idea y consumirá memoria adicional para cada contexto de seguridad.

Se ha agregado en Windows 7 y Windows Server 2008 R2: hay disponible una actualización que permite a Internet Explorer en Windows XP, en Windows Vista o en Windows Server 2008 analizar 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 el cliente TLS aceptará, 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 se 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 se 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 Internet Explorer no puede elegir un certificado que encadena hasta 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 enviar lista de emisores de confianza

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

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 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 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 versiones de protocolo diferentes. Los autores de la llamada SSPI pueden restringir (pero no expandir) el conjunto de versiones de (D)TLS y SSL disponibles en todo el sistema, especificando una estructura SCH_CREDENTIALS o SCHANNEL_CRED en la llamada AcquireCredentialsHandle. Se recomienda que los llamadores 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 del protocolo mediante la estructura SCH_CREDENTIALS, SChannel SSP puede negociar esta versión del protocolo con un par compatible.
  • Deshabilitado de forma predeterminada: a menos que el autor de la llamada de SSPI solicite explícitamente esta versión del protocolo mediante la estructura 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 de versión predeterminada del protocolo (D)TLS y SSL mediante la creación de los 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 formato siguiente:

<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 válidas del Registro 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 admitida del protocolo (D)TLS o SSL en el estado Habilitado, cree un valor del Registro DWORD denominado "Enabled" con un valor distinto de cero y un valor del Registro DWORD denominado "DisabledByDefault" con un valor de cero, 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:

Cliente TLS 1.0 habilitado

Para invalidar un valor predeterminado del sistema y establecer una versión admitida del protocolo (D)TLS o SSL en el estado Deshabilitado de forma predeterminada, cree valores del Registro DWORD denominados "Enabled" y "DisabledByDefault" con un valor distinto de cero 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:

El servidor TLS 1.0 está deshabilitado de forma predeterminada

Para invalidar un valor predeterminado del sistema y establecer una versión de protocolo COMPATIBLE (D)TLS o SSL 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 el servidor TLS 1.0 establecido en el estado Deshabilitado:

Servidor TLS 1.0 deshabilitado

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

Una vez modificada la configuración de la versión del protocolo (D)TLS o SSL, se hace efectiva en las conexiones establecidas mediante identificadores de credenciales abiertos por las llamadas a AcquireCredentialsHandle posteriores. (D) Las aplicaciones y servicios de cliente y servidor TLS y SSL tienden a reutilizar identificadores de credenciales para varias conexiones, por motivos de rendimiento. Para que estas aplicaciones vuelvan a adquirir sus identificadores de credenciales, puede ser necesario reiniciar la aplicación o el servicio.

Tenga en cuenta que 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 puedan instalar en el sistema.