Compartilhar via


Erros de SSL são relatados após a atualização para o TLS 1.2

Este artigo fornece informações sobre os erros SSL (Secure Sockets Layer) que você pode encontrar após a atualização para o TLS 1.2 no SQL Server. Ele também lista os métodos pelos quais você pode recuperar os dados manualmente. Você também pode executar a ferramenta SQLCHECK e revisar as informações no arquivo de log SQLCHECK.

Sintomas

Considere o cenário a seguir em que você pode ver os seguintes problemas depois de atualizar o protocolo TLS para o TLS 1.2.

  • O Microsoft SQL Server usa um certificado assinado por um algoritmo de hash fraco. Esses certificados incluem MD5, SHA224 e SHA512.

  • As atualizações do TLS 1.2 foram aplicadas apenas ao cliente ou ao servidor, mas não a ambos.

  • O TLS 1.0 está desabilitado.

  • Não há algoritmos criptográficos correspondentes entre o cliente e o servidor.

Nesse cenário, você encontra os seguintes problemas após a conclusão da atualização:

  • Os problemas que afetam o certificado do servidor também afetam as conexões locais e as conexões de computadores cliente. Para obter mais informações, consulte Encrypting Connections to SQL Server.

  • O aplicativo pode gerar uma das seguintes mensagens de erro:

    Pipes nomeados

    Uma conexão com o servidor foi estabelecida com êxito, mas ocorreu um erro durante o processo de logon. (provedor: Provedor SSL, erro: 0 - Nenhum processo na outra extremidade do pipe) Microsoft SQL Server, Erro: 233.

    TCP

    Uma conexão com o servidor foi estabelecida com êxito, mas ocorreu um erro durante o processo de logon. (provedor: Provedor SSL, erro: 0 - A conexão foi fechada à força pelo host remoto 10054) Microsoft SQL Server, Erro: 233.

Se você tiver uma captura de rede, ela poderá se parecer com a captura de tela a seguir que mostra que o servidor responde ao Client Hello pacote fechando a conexão.

Captura de tela de uma captura de rede que mostra como o servidor responde ao pacote Client Hello.

Resolução

Para resolver esses erros, siga estas etapas:

  1. Abra o SQL Server Configuration Manager, clique com o botão direito do mouse em Protocolos para <InstanceName> e selecione Propriedades.

  2. Selecione a guia Certificado e verifique qual certificado está sendo usado.

    Captura de tela da guia Certificado que mostra qual certificado é usado.

    • Se existir um certificado, selecione Exibir para examiná-lo e, em seguida, selecione Limpar. Em seguida, vá para a etapa 4.

    • Se não houver certificado, examine o arquivo de log de erros do SQL Server para obter o código hash. Você pode ver uma das seguintes entradas:

      2023-05-30 14:59:30.89 spid15s The certificate [Cert Hash(sha1) "B3029394BB92AA8EDA0B8E37BAD09345B4992E3D"] was successfully loaded for encryption. ou 2023-05-19 04:58:56.42 spid11s A self-generated certificate was successfully loaded for encryption. Se o certificado for gerado automaticamente, pule para a etapa 2.

  3. Abra o Repositório de Certificados do Computador no MMC (Console de Gerenciamento Microsoft).

    1. Navegue até Certificados Pessoais.

    2. Expanda a coluna Finalidades pretendidas e clique duas vezes nos certificados habilitados para autenticação do servidor.

    3. Verifique se a impressão digital corresponde à impressão digital no arquivo de log de erros. Se isso não acontecer, tente outro certificado.

    4. Verifique o algoritmo de hash de assinatura. Se for MD5, SHA224 ou SHA512, ele não dará suporte ao TLS 1.2. Se for um dos algoritmos fracos, desabilite a Autenticação de Servidor para que o SQL Server não possa usá-lo.

    5. Se o certificado for especificado explicitamente no SQL Server Configuration Manager, selecione Limpar para removê-lo.

    6. Localize o certificado no MMC.

    7. No MMC, clique com o botão direito do mouse no certificado e selecione Propriedades.

    8. Na guia Geral , desabilite o certificado completamente ou desabilite seletivamente a Autenticação do Servidor.

      Selecione Propriedades do SQL Server Configuration Manager.

  4. Salve as alterações.

  5. Reinicie o SQL Server.

    O log de erros agora deve indicar que um certificado gerado automaticamente é usado. Se o problema for resolvido, o SQL Server poderá ser executado com êxito usando o certificado autoassinado. Se você quiser um certificado Verisign ou outro, peça ao provedor de certificados para garantir que um hash forte seja usado e apropriado para o TLS 1.2. Se o problema não for resolvido, volte para a etapa 2.

Verificar protocolos TLS habilitados e desabilitados

Para verificar os protocolos TLS ativados e desativados, siga estas etapas:

  1. Verifique o fluxo de trabalho de atualização em segundo plano e básico, caso ainda não tenha feito isso.

    O cliente e o servidor devem ser atualizados para impor o TLS 1.2. Se for necessário, você pode atualizar o servidor, mas deixar o TLS 1.0 habilitado para que os clientes não atualizados possam se conectar.

  2. Verifique o registro SSL ou TLS usando REGEDIT.

    Você pode encontrar as versões SSL ou TLS habilitadas e desabilitadas na seguinte subchave do Registro:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

    Há subchaves de cliente e servidor para cada versão do SSL ou TLS, e ambas têm valores Enabled e Disabled :

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

    Observação

    Qualquer valor diferente de zero é tratado como TRUE. No entanto, 1 é geralmente preferido em vez de FFFFFFFF (ou -1).

  3. Certifique-se de que não haja configurações incompatíveis.

    Por exemplo, o TLS 1.0 está desabilitado e o TLS 1.2 está habilitado no servidor. Isso ocorre porque essas configurações podem não corresponder às configurações no cliente ou o driver do cliente pode não ser atualizado.

    Você pode testar essa situação configurando Enabled=0 o TLS 1.2 (e também reabilitar o TLS 1.0 se estiver desabilitado).

  4. Reinicie o SQL Server para verificar se o problema está relacionado ao TLS 1.2 ou se é um problema geral.

Sem conjuntos de cifras correspondentes

Você pode examinar as versões TLS do cliente e do servidor e os conjuntos de criptografia nos Client Hello pacotes e Server Hello . O Client Hello pacote anuncia todos os conjuntos de cifras do cliente e especifica Server Hello um conjunto de cifras. Se não houver suítes correspondentes, o servidor fechará a conexão em vez de responder enviando o Server Hello pacote.

Captura de tela dos detalhes do pacote de criptografia que você pode examinar para determinar se os pacotes correspondem.

Se um rastreamento de rede não estiver disponível, você poderá verificar o valor da função na seguinte subchave do Registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002

Se você não vir nenhum algoritmo correspondente, entre em contato com o Suporte da Microsoft. Para ajudar o engenheiro de suporte, capture rastreamentos de rede ou rastreamentos BID, conforme especificado em Captura avançada de dados SSL.