升级 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 应用程序以使用 SQL Server Microsoft OLE DB Driver 19 或 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。 可以从适用于 SQL Server 的 Microsoft OLE DB 驱动程序的发行说明下载驱动程序。
解决方案 2:如果应用程序连接字符串属性已指定“加密/对数据加密”设置的“是”或“必需”值,请将值更改为“否”或“可选”。 例如,Use Encryption for Data=Optional。 如果连接字符串未为“加密/对数据使用加密”指定任何值,请向连接字符串添加“使用 Data 加密”=“可选”。 有关详细信息,请参阅加密和证书验证。
解决方案 3:添加到
;TrustServerCertificate=true
连接字符串。 这将强制使客户端在不验证的情况下信任证书。-
注意
目前,MSOLEDBSQL19 阻止创建没有加密和可信证书的链接服务器(自签名证书还不够)。 如果需要链接服务器,请使用现有受支持的 MSOLEDBSQL 版本。