Ошибка "Цепочка сертификатов выдана центром, который не является доверенным" после обновления приложений SNAC

Поддержка SQL Server Native Client 11.0 (SNAC) в качестве драйвера для приложений баз данных прекращена 12 июля 2022 г. Все приложения, использующие SNAC 11.0, должны быть обновлены для использования более новых версий драйверов (см. статьи Скачивание драйвера ODBC для SQL Server и Скачивание Microsoft OLE DB Driver for SQL Server). В этой статье описывается проблема, возникающая при обновлении приложения SNAC 11.0 до использования Microsoft OLE DB Driver 19 для SQL Server или Microsoft ODBC Driver 18.x для SQL Server.

Если вы недавно обновили приложение SQL Server Native Client 11.0 (Provider=SQLNCLI11) для использования Microsoft OLE DB Driver 19 для SQL Server (Provider=MSOLEDBSQL19), вы можете получать сообщения об ошибках, похожие на следующие сообщения:

[Драйвер Microsoft OLE DB 19 для SQL Server]: клиенту не удается установить подключение

[Драйвер Microsoft OLE DB 19 для SQL Server]: поставщик SSL: цепочка сертификатов была выдана центром, который не является доверенным.

Причина

Эти ошибки возникают, если выполняются оба следующих условия:

  • Параметр Принудительное шифрование для экземпляра SQL Server имеет значение Нет.

  • Клиентский строка подключения явно не указывает значение для свойства шифрования или параметр Шифрование не был явно задан или обновлен в dsN.

Ошибка возникает из-за изменения поведения по умолчанию клиентских драйверов. В более старых версиях клиентских драйверов предполагается, что шифрование данных по умолчанию отключено . Новые драйверы предполагают, что этот параметр по умолчанию включен. Так как для шифрования данных задано значение ON, драйвер пытается проверить сертификат сервера и завершается сбоем.

Решения

  • Решение 1. Используйте Microsoft OLE DB Driver for SQL Server 18.x. Драйвер можно скачать в заметках о выпуске для Microsoft OLE DB Driver for SQL Server.

  • Решение 2. Если свойство строка подключения приложения уже указывает значение Да или Обязательно для параметра Шифрование и использование шифрования данных, измените значение на Нет или Необязательный. Например, Использовать шифрование для data=Optional. Если в строка подключения не указано значение Encrypt/Use Encryption for Data, добавьте в строка подключения Параметр Использовать шифрование для данных=Необязательный. Дополнительные сведения см. в разделе Шифрование и проверка сертификатов.

  • Решение 3. Добавьте ;TrustServerCertificate=true в строка подключения. Это приведет к принудительному доверию сертификата без проверки.

  • Примечание.

    В настоящее время MSOLEDBSQL19 предотвращает создание связанных серверов без шифрования и доверенного сертификата (самозаверяющего сертификата недостаточно). Если требуются связанные серверы, используйте существующую поддерживаемую версию MSOLEDBSQL.

См. также