升级 SNAC 应用程序后出现“证书链由不受信任的颁发机构颁发”错误

对 SQL Server Native Client 11.0 (SNAC) 作为数据库应用程序驱动程序的支持已于 2022 年 7 月 12 日结束。 使用 SNAC 11.0 的任何应用程序都必须更新为使用较新版本的驱动程序 (请参阅下载 ODBC Driver for SQL Server下载Microsoft OLE DB Driver for SQL Server) 。 本文介绍将 SNAC 11.0 应用程序升级为使用 Microsoft OLE DB Driver 19 for SQL Server 或 Microsoft ODBC Driver 18 时出现的问题。x for SQL Server。

如果最近将 SQL Server Native Client 11.0 (Provider=SQLNCLI11) 应用程序升级为使用 Microsoft OLE DB Driver 19 for SQL Server (Provider=MSOLEDBSQL19) ,则可能会收到类似于以下消息的错误消息:

[Microsoft OLE DB Driver 19 for SQL Server]:客户端无法建立连接

[Microsoft OLE DB Driver 19 for SQL Server]:SSL 提供程序:证书链由不受信任的颁发机构颁发。

原因

如果满足以下两个条件,则会发生这些错误:

  • SQL Server 实例的“强制加密”设置为“否”。

  • 客户端连接字符串未显式指定加密属性的值,或者未在 DSN 中显式设置或更新加密选项。

发生此错误的原因是客户端驱动程序的默认行为发生了更改。 旧版客户端驱动程序旨在假定默认情况下数据加密为 OFF 。 新驱动程序假定此设置默认为 ON 。 由于数据加密设置为 ON,因此驱动程序会尝试验证服务器的证书,但失败。

解决方案

  • 解决方案 1:使用 Microsoft OLE DB Driver for SQL Server 18.x。 可以从Microsoft OLE DB Driver for SQL Server的发行说明下载驱动程序。

  • 解决方案 2:如果应用程序连接字符串属性已为“加密/使用数据加密”设置指定值为“是”或“必需”,请将值更改为“否”或“可选”。 例如, 对数据使用加密=可选。 如果连接字符串未为“加密/使用数据加密”指定任何值,请将“使用数据加密=可选”添加到连接字符串。 有关详细信息,请参阅 加密和证书验证

  • 解决方案 3:添加到;TrustServerCertificate=true连接字符串。 这将强制客户端在不验证的情况下信任证书。

  • 注意

    目前,MSOLEDBSQL19阻止在没有加密的情况下创建链接服务器,并且 (自签名证书) 不足的情况下创建受信任的证书。 如果需要链接服务器,请使用 MSOLEDBSQL 的现有受支持版本。

另请参阅