Erro "A cadeia de certificados foi emitida por uma autoridade que não é confiável" após atualizar aplicativos SNAC

O suporte para o SNAC (SQL Server Native Client 11.0) como driver para aplicativos de banco de dados terminou em 12 de julho de 2022. Todos os aplicativos que usam o SNAC 11.0 devem ser atualizados para usar versões mais recentes dos drivers (consulte Baixar Driver ODBC para SQL Server e Baixar Driver do Microsoft OLE DB para SQL Server). Este artigo descreve um problema que ocorre quando você atualiza seu aplicativo SNAC 11.0 para usar o Microsoft OLE DB Driver 19 para SQL Server ou Microsoft ODBC Driver 18.x para SQL Server.

Se você atualizou recentemente seu aplicativo SQL Server Native Client 11.0 (Provider=SQLNCLI11) para usar o Microsoft OLE DB Driver 19 para SQL Server (Provider=MSOLEDBSQL19), você poderá receber mensagens de erro que se assemelham às seguintes mensagens:

[Microsoft OLE DB Driver 19 for SQL Server]: Cliente não pode estabelecer conexão

[Microsoft OLE DB Driver 19 for SQL Server]: Provedor SSL: A cadeia de certificados foi emitida por uma autoridade que não é confiável.

Motivo

Esses erros ocorrerão se as duas condições a seguir forem verdadeiras:

  • A configuração de criptografia force para a instância SQL Server está definida como No.

  • O cadeia de conexão do cliente não especifica explicitamente um valor para a propriedade de criptografia ou a opção Criptografia não foi definida ou atualizada explicitamente no DSN.

O erro ocorre devido a uma alteração no comportamento padrão dos drivers de cliente. Versões mais antigas de drivers cliente são projetadas para assumir que a criptografia de dados é OFF por padrão. Os novos drivers pressupõem que essa configuração seja ON por padrão. Como a criptografia de dados é definida como ON, o driver tenta validar o certificado do servidor e falha.

Soluções

  • Solução 1: Use Driver do Microsoft OLE DB para SQL Server 18.x. Você pode baixar o driver de notas de versão para o Driver do Microsoft OLE DB para SQL Server.

  • Solução 2: Se o aplicativo cadeia de conexão propriedade já especificar um valor de Sim ou Obrigatório para a configuração Criptografar/Usar Criptografia para Dados, altere o valor para Não ou Opcional. Por exemplo, use Criptografia para Dados=Opcional. Se o cadeia de conexão não especificar nenhum valor para Criptografia/Usar Criptografia para Dados, adicione Use Encryption for Data=Optional à cadeia de conexão. Para obter mais informações, consulte Criptografia e validação de certificado.

  • Solução 3: Adicione ;TrustServerCertificate=true ao cadeia de conexão. Isso forçará o cliente a confiar no certificado sem validação.

  • Observação

    Atualmente, MSOLEDBSQL19 impede a criação de servidores vinculados sem criptografia e um certificado confiável (um certificado autoassinado é insuficiente). Se os servidores vinculados forem necessários, use a versão com suporte existente do MSOLEDBSQL.

Confira também