Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo explica as informações de configuração de registro com suporte para a implementação do Windows do protocolo TLS (Transport Layer Security) e o protocolo SSL (Secure Sockets Layer) por meio do SSP (Provedor de Suporte à Segurança do Schannel). As subchaves e as entradas do Registro abordadas neste artigo ajudam você a administrar e solucionar problemas do SSP do Schannel, especificamente os protocolos TLS e SSL.
Atenção
Essas informações são fornecidas como uma referência a ser usada quando você está solucionando problemas ou verificando se as configurações necessárias são aplicadas. Recomendamos que você não edite diretamente o Registro, a menos que não haja outra alternativa. As modificações no registro não são validadas pelo Editor do Registro ou pelo sistema operacional Windows antes de serem aplicadas. Como resultado, valores incorretos podem ser armazenados, e isso pode resultar em erros irrecuperáveis no sistema. Quando possível, em vez de editar o Registro diretamente, use a Política de Grupo ou outras ferramentas do Windows, como o MMC (Console de Gerenciamento Microsoft). Se você deve editar o Registro, tenha muito cuidado.
Registro em log do Schannel
Há oito níveis de registro em log para eventos Schannel salvos no log de eventos do sistema e podem ser exibidos usando o Visualizador de Eventos. Esse caminho do Registro é armazenado em HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL na chave EventLogging com um valor DWORD definido como 1.
| Decimal ou Hex | Eventos de registro em log do Schannel |
|---|---|
| 0 | Nenhum evento |
| 1 | Eventos de erro |
| 2 | Eventos de aviso |
| 3 | Eventos de erro e aviso |
| 4 | Eventos informativos e de êxito |
| 5 | Eventos de erro, informativos e de êxito |
| 6 | Eventos de aviso, informativos e de êxito |
| 7 | Eventos de erro, aviso, informativos e de êxito |
Observação
Você deve reinicializar o dispositivo após alterar o nível de log.
CertificateMappingMethods
Quando um aplicativo de servidor requer autenticação de cliente, o Schannel tenta mapear automaticamente o certificado fornecido pelo computador cliente para uma conta de usuário. Você pode autenticar os usuários que se conectam com um certificado de cliente, criando mapeamentos que se relacionam com as informações de certificado de uma conta de usuário do Windows.
Depois de criar e habilitar um mapeamento de certificado, sempre que um cliente apresentar um certificado, o aplicativo para servidores associará automaticamente esse usuário à conta de usuário do Windows apropriada.
Na maioria dos casos, um certificado é mapeado para uma conta de usuário em uma de duas maneiras:
- Um único certificado é mapeado para uma única conta de usuário (mapeamento um a um).
- Vários certificados são mapeados para várias contas de usuário (mapeamento muitos para um).
O provedor Schannel usa quatro métodos de mapeamento de certificado:
- Mapeamento de S4U (serviço para usuário) Kerberos (habilitado por padrão)
- Mapeamento de nome UPN
- Mapeamento um a um (também conhecido como mapeamento de assunto/emissor)
- Mapeamento muitos-para-um
Caminho do registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
| Nome da entrada | dword | Habilitado por padrão |
|---|---|---|
| Entidade/emissor | 0x000000001 | Não |
| Emissor | 0x000000002 | Não |
| UPN | 0x000000004 | Não |
| S4U2Self | 0x000000008 | Sim |
| S4U2Self Explicit | 0x000000010 | Sim |
Criptografias
As criptografias TLS/SSL devem ser controladas com a configuração do pedido do pacote de criptografia. Para obter detalhes, consulte Configurando o pedido do pacote de criptografia TLS.
Para obter informações sobre pedidos de pacote de criptografia padrão usados pelo SSP do Schannel, consulte Cipher Suites no TLS/SSL (SSP Schannel).
CipherSuites
A configuração de pacotes de criptografia TLS/SSL deve ser feita usando-se política de grupo, MDM ou PowerShell; consulte Configurar o pedido do pacote de criptografia TLS para obter detalhes.
Para obter informações sobre pedidos de pacote de criptografia padrão usados pelo SSP do Schannel, consulte Cipher Suites no TLS/SSL (SSP Schannel).
ClientCacheTime
Essa entrada especifica o tempo de vida do item de cache de sessão TLS do cliente em milissegundos. Do Windows Server 2008 e do Windows Vista em diante, o padrão é de 10 horas. Um valor 0 desativa o cache de sessão TLS no cliente.
Na primeira vez que um cliente se conecta a um servidor por meio do SSP do Schannel, um handshake TLS/SSL completo é executado. Quando isso for concluído, o segredo mestre, o conjunto de criptografias e os certificados serão armazenados no cache da sessão, nos respectivos cliente e servidor.
Caminho do registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
EnableOcspStaplingForSni
O grampeamento do OCSP (Protocolo de Status de Certificado Online) permite que um servidor Web, como os Serviços de Informações da Internet (IIS), forneça o status de revogação atual de um certificado de servidor quando ele envia o certificado do servidor a um cliente durante o handshake do TLS. Esse recurso reduz a carga em servidores OCSP porque o servidor Web pode armazenar em cache o status OCSP atual do certificado do servidor e enviá-lo a vários clientes Web. Sem esse recurso, cada cliente Web tentaria recuperar o status OCSP atual do certificado do servidor OCSP. Isso geraria uma carga alta nesse servidor OCSP.
Além do IIS, os serviços Web por http.sys também podem se beneficiar dessa configuração, incluindo AD FS (Serviços de Federação do Active Directory) e WAP (Web Proxy de Aplicativo).
Por padrão, o suporte a OCSP está habilitado para sites do IIS que têm uma associação (SSL/TLS) simples protegida. No entanto, esse suporte não estará habilitado por padrão se o site do IIS estiver usando um ou os dois seguintes tipos de associações SSL/TLS:
- Exigir Indicação de Nome de Servidor
- Usar repositório de certificados centralizados
Nesse caso, a resposta do servidor hello durante o handshake do TLS não inclui um status grampeado OCSP por padrão. Esse comportamento melhora o desempenho: a implementação de grampeamento do Windows OCSP é dimensionada para centenas de certificados de servidor. No entanto, a SNI (Indicação de Nome do Servidor) e o CCS (Repositório Central de Certificados) habilitam que o IIS seja escalado para milhares de sites que potencialmente têm milhares de certificados de servidor. Portanto, habilitar o grampeamento do OCSP para associações CCS poderia causar problemas de performance.
Caminho do registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Adicione a seguinte chave:
"EnableOcspStaplingForSni"=dword:00000001
Para desabilitar, defina o valor DWORD como 0:
"EnableOcspStaplingForSni"=dword:00000000
Observação
A habilitação dessa chave do Registro tem possível impacto no desempenho.
Hashes
Os algoritmos de hash TLS/SSL devem ser controladas com a configuração do pedido do pacote de criptografia. Consulte Configurando o pedido do pacote de criptografia TLS para obter detalhes.
IssuerCacheSize
Essa entrada controla o tamanho do cache emissor e é usada com o mapeamento do emissor. O SSP do Schannel tenta mapear todos os emissores na cadeia de certificados do cliente, não apenas o emissor direto do certificado do cliente. Quando os emissores não são mapeados para uma conta, que é o caso típico, o servidor pode tentar mapear o mesmo nome do emissor repetidamente, centenas de vezes por segundo.
Para evitar isso, o servidor tem um cache negativo, portanto, se um nome do emissor não for mapeado para uma conta, ele será adicionado ao cache e o SSP do Schannel não tentará mapear o nome do emissor novamente até que a entrada de cache expire. Essa entrada de Registro especifica o tamanho do cache. Essa entrada não existe no registro por padrão. O valor padrão é 100.
Caminho do registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
IssuerCacheTime
Essa entrada controla o comprimento do intervalo de tempo limite do cache em milissegundos. O SSP do Schannel tenta mapear todos os emissores na cadeia de certificados do cliente, não apenas o emissor direto do certificado do cliente. Caso os emissores não sejam mapeados para uma conta, que é o caso típico, o servidor pode tentar mapear o mesmo nome do emissor repetidamente, centenas de vezes por segundo.
Para evitar isso, o servidor tem um cache negativo, portanto, se um nome do emissor não for mapeado para uma conta, ele será adicionado ao cache e o SSP do Schannel não tentará mapear o nome do emissor novamente até que a entrada de cache expire. Esse cache é mantido por motivos de desempenho, para que o sistema não continue tentando mapear os mesmos emissores. Essa entrada não existe no registro por padrão. O valor padrão é 10 minutos.
Caminho do registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Tamanhos de chave KeyExchangeAlgorithm
Por padrão, as entradas a seguir talvez não existam no Registro e devem ser criadas manualmente. O uso de algoritmos de troca de chaves deve ser controlado com a configuração do pedido do pacote de criptografia. Para saber mais sobre algoritmos criptográficos do pacote de criptografia do TLS/SSL, consulte os pacotes de criptografia no TLS/SSL (SSP do Schannel).
Adicionado ao Windows 10, versão 1507 e ao Windows Server 2016.
Caminho do registro: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman
Para especificar um intervalo mínimo com suporte do tamanho de bit de chave Diffie-Hellman para o cliente TLS, crie uma entrada ClientMinKeyBitLength. Após criar a entrada, altere o valor DWORD para o comprimento de bit desejado. Se não estiver configurado, 1024 bits será o mínimo.
Observação
As curvas elípticas configuradas determinam a força criptográfica da troca de chaves ECDHE. Para mais informações, confira TLS (Gerenciador do protocolo TLS).
MaximumCacheSize
Essa entrada controla o número máximo de sessões TLS para cache. A configuração MaximumCacheSize de 0 desabilita o cache de sessão do lado do servidor para impedir a retomada. O aumento de MaximumCacheSize acima dos valores padrão faz com que o Lsass.exe consuma memória adicional. Cada elemento de cache de sessão normalmente requer de 2 KB a 4 KB de memória. Essa entrada não existe no registro por padrão. O valor padrão é 20.000 elementos.
Caminho do registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Mensagens – análise de fragmentos
Essa entrada controla o tamanho máximo permitido de uma mensagem de handshake TLS que seja aceita. As mensagens maiores do que o tamanho permitido não são aceitas e ocorre falha no handshake TLS. Essas entradas não existem no Registro por padrão.
Quando você define o valor como 0x0, as mensagens fragmentadas não são processadas e levam à falha do handshake TLS. Isso acaba com a conformidade dos clientes ou servidores TLS no computador atual com os RFCs TLS.
O tamanho máximo permitido pode ser aumentado até 2^16 bytes. Não é uma boa ideia permitir que um cliente ou servidor leiam e armazenem grandes volumes de dados não verificados direto da rede, pois esse procedimento consome memória adicional para cada contexto de segurança.
Adicionado no Windows 7 e no Windows Server 2008 R2: está disponível uma atualização que habilita o Internet Explorer no Windows XP, no Windows Vista ou no Windows Server 2008 para analisar mensagens fragmentadas de handshake TLS/SSL.
Caminho do registro: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Messaging
Para especificar o tamanho máximo permitido de mensagens de handshake TLS que o cliente TLS aceita, crie uma entrada MessageLimitClient. Após criar a entrada, altere o valor DWORD para o comprimento de bit desejado. Se não estiver configurado, o valor padrão será 0x8000 bytes.
Para especificar o tamanho máximo permitido de mensagens de handshake TLS que o servidor TLS aceita quando não há autenticação de cliente, crie uma entrada MessageLimitServer. Após criar a entrada, altere o valor DWORD para o comprimento de bit desejado. Se não estiver configurado, o valor padrão será 0x4000 bytes.
Para especificar o tamanho máximo permitido de mensagens de handshake TLS que o servidor TLS aceita quando há autenticação de cliente, crie uma entrada MessageLimitServerClientAuth. Após criar a entrada, altere o valor DWORD para o comprimento de bit desejado. Se não estiver configurado, o valor padrão será 0x8000 bytes.
EnviarListaDeEmissoresConfiáveis
Os servidores TLS talvez enviem uma lista dos nomes diferenciados das autoridades de certificação aceitáveis ao solicitar a autenticação do cliente. Isso pode ajudar os clientes TLS a selecionar um certificado de cliente TLS apropriado. Os servidores TLS baseados em Schannel não enviam essa lista de emissores confiáveis por padrão porque expõe as autoridades de certificação confiáveis pelo servidor para observadores passivos e também aumenta a quantidade de dados trocados no curso do handshake do TLS. Definir esse valor como 1 faz com que os servidores baseados em Schannel enviem suas listas de emissores confiáveis.
O não envio de uma lista de emissores confiáveis pode afetar o que o cliente envia quando lhe é solicitado um certificado de cliente. Por exemplo, quando o Microsoft Edge recebe uma solicitação de autenticação de cliente, ele exibe apenas os certificados de cliente que encadeiam até uma das autoridades de certificação enviadas pelo servidor. Se o servidor não tiver enviado uma lista, o Microsoft Edge exibirá todos os certificados de cliente que estão instalados no cliente.
Esse comportamento pode ser desejável. Por exemplo, quando os ambientes de PKI incluírem certificados cruzados, os certificados de cliente e servidor não têm a mesma AC raiz. Portanto, o Microsoft Edge não poderá escolher um certificado que seja encadeado até uma das ACs do servidor. Os clientes TLS talvez ofereçam certificados de cliente disponíveis quando um servidor não enviar uma lista de emissores confiáveis. Essa entrada não existe no registro por padrão.
Comportamento padrão da lista de emissores confiáveis de envio
| Versão do Windows | Comportamento padrão |
|---|---|
| Windows Server 2012, Windows 8 e posterior | FALSE |
Caminho do registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
ServerCacheTime
Essa entrada especifica o tempo de vida do item de cache de sessão TLS do servidor em milissegundos. O padrão é 10 horas. Um valor 0 desativa o cache de sessão TLS no servidor e impede a retomada da sessão. O aumento de ServerCacheTime acima dos valores padrão faz com que o Lsass.exe consuma memória adicional. Cada elemento de cache de sessão normalmente requer de 2 KB a 4 KB de memória. Essa entrada não existe no registro por padrão.
Caminho do registro: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Tempo de cache do servidor padrão: 10 horas
Configurações de versão de protocolo TLS, DTLS e SSL
O SSP SChannel implementa versões dos protocolos TLS, DTLS e SSL. Versões diferentes do Windows dão suporte a versões de protocolo diferentes. O conjunto de versões (D)TLS e SSL disponíveis em todo o sistema pode ser restrito (mas não expandido) por chamadores SSPI que especificam a estrutura SCH_CREDENTIALS na chamada AcquireCredentialsHandle. É recomendável que os chamadores de SSPI usem os padrões do sistema em vez de impor restrições de versão de protocolo.
Uma versão de protocolo TLS ou SSL com suporte pode existir em um dos seguintes estados:
- Habilitado: a menos que o chamador SSPI desabilite explicitamente essa versão de protocolo usando a estrutura SCH_CREDENTIALS, o SSP do Schannel, podendo negociar essa versão de protocolo com um par compatível.
- Desabilitado: o SSP do Schannel não negocia essa versão de protocolo, independentemente das configurações que o chamador de SSPI pode especificar.
Esses valores de registro são configurados separadamente para as funções de cliente e servidor de protocolo nas subchaves do registro nomeadas usando o seguinte formato:
<SSL/TLS/DTLS> <major version number>.<minor version number><Client\Server>
Essas subchaves específicas da versão podem ser criadas no seguinte caminho de registro:
HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
Por exemplo, aqui estão alguns caminhos de registro válidos com subchaves específicas da versão:
HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\ClientHKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\ServerHKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\DTLS 1.2\Client
Para substituir um padrão do sistema e definir uma versão de protocolo (D)TLS ou SSL com suporte ao estado Enabled, crie um valor de Registro DWORD chamado Enabled com valor de entrada igual a "1" na subchave específica da versão correspondente.
O exemplo abaixo mostra o cliente TLS 1.0 definido como o estado Enabled:
Para substituir um padrão do sistema e definir uma versão de protocolo (D)TLS ou SSL com suporte ao estado Disabled, altere um valor de Registro DWORD de Enabled para "0" na subchave específica da versão correspondente.
O exemplo abaixo mostra o DTLS 1.2 desabilitado no registro:
A alternância de uma versão do protocolo (D)TLS ou SSL para o estado Disabled talvez faça com que as chamadas AcquireCredentialsHandle falhem devido à falta de versões de protocolo habilitadas para todo o sistema e ao mesmo tempo permitidas por determinados chamadores de SSPI. Além disso, a redução do conjunto de versões de (D)TLS e SS Enabled poderiam interromper a interoperabilidade com pares remotos.
Depois que as configurações de versão do protocolo (D)TLS ou SSL forem modificadas, elas entrarão em vigor em conexões estabelecidas usando-se identificadores de credencial abertos por chamadas AcquireCredentialsHandle subsequentes. (Os serviços e aplicativos de cliente e servidor (D)TLS e SSL tendem a reutilizar identificadores de credenciais para várias conexões, por motivos de desempenho. Para que esses aplicativos requisitem seus identificadores de credencial, uma reinicialização de aplicativo ou serviço talvez seja necessária.
Essas configurações do Registro se aplicam apenas ao SSP do Schannel e não afetam nenhuma implementação de TLS e SSL de terceiros que possam ser instaladas no sistema.
Aviso
A tentativa de criar ou ajustar as configurações do Registro Schannel que não sejam explicitamente detalhadas neste artigo não é recomendada devido a riscos potenciais e consequências não intencionais que podem surgir de configurações sem suporte.
Para saber mais sobre como gerenciar o pacote de criptografia TLS usando o PowerShell, consulte Referência de comando TLS. Se estiver interessado em gerenciar as configurações do TLS por meio da Política de Grupo, consulte Configurar a ordem do pacote de criptografia TLS usando a Política de Grupo.