我们的客户最近从TLS 1.0升级到TLS 1.2,之后我们的软件无法与SQL服务器连接。它使用OLE DB提供程序连接到SQL Server。 以下是从SQL服务器返回的错误 -
[DBNETLIB] [ConnectionOpen SECDoClientHandshake()] SSL安全性错误 SQL状态:08001 SQL错误号:18
找不到与Microsoft OLE DB Provider for SQL Server是否支持TLS 1.2相关的任何有用信息。
我发现的其中一个链接似乎暗示它不受支持。 https://forums.iis.net/t/1233674.aspx?connecing+SQL+server+DB+issue+after+installingTLS1+2+in+SQL+srver+with+classic+asp+application+
因此,想要检查stackoverflow,以防任何人有任何关于此的信息。
答案 0 :(得分:16)
Windows附带的SQLOLEDB提供程序和SQL Server ODBC驱动程序是仅为向后兼容性而提供的旧组件。自SQL 2005以来,这些已被弃用。
根据this blog post by the MSSQL Tiger Team:
SQLOLEDB不会获得对TLS 1.2的支持。你需要切换 您的驱动程序是其中一个受支持的驱动程序 https://support.microsoft.com/en-us/kb/3135244
您应该能够安装SQL Server Native Client 2012并使用该OLE DB提供程序仅更改连接字符串(将Provider=SQLOLEDB
更改为Provider=SQLNCLI11
)。当然,一旦应该测试,以避免意外。例如,我记得有人在使用服务器API游标时遇到与SQL Server Native Client提供程序和ADO classic的行为差异,尽管常用的firehose游标很好。
修改强>
新的OLE DB驱动程序MSOLEDBSQL已经发布。此新驱动程序包括对最新TLS 1.2标准的支持,并向后兼容SQL Server Native Client 11(SQLNCLI11)。请参阅the Microsoft SQLNCLi team blog announcement。
答案 1 :(得分:8)
这对您来说可能不是一个解决方案,因为它是您的客户可能无法等待的未来修复,但显然Microsoft 不推荐 OLEDB驱动程序,新版本支持TLS 1.2 2018年第一季度:https://blogs.msdn.microsoft.com/sqlnativeclient/2017/10/06/announcing-the-new-release-of-ole-db-driver-for-sql-server/
用于SQL Server的新Microsoft OLE DB驱动程序或msoledbsql将使用 首先介绍多子网故障转移功能 即将发布的并跟上最新的TLS 1.2标准。
此外,第一个即将发布的版本将是一个独立安装 与SQL Server生命周期带外的程序包。这也意味着 驱动程序不会打包在SNAC库中,也不会与之配合使用 任何其他司机。
答案 2 :(得分:0)
在我端进行以下更改解决了Azure云上的TLS1.2升级后的问题-
Provider=SQLOLEDB
更改为Provider=SQLNCLI11
答案 3 :(得分:0)
这可能无法直接回答问题,但仍与TLS 1.2错误的sql server连接有关。
我正在维护一个旧的ASP Classic网站,该网站因以下错误而中断。
Microsoft OLE DB Provider for SQL Server error '80004005'
[DBNETLIB][ConnectionOpen (SECDoClientHandshake()).]SSL Security error.
将Provider
从SQLOLEDB
更改为SQL Server Native Client 11.0
或任何可用的更高版本,可以解决该错误。
因此,从
更改连接字符串constr = "Provider=SQLOLEDB;Data Source=..."
到
constr = "Provider=SQL Server Native Client 11.0;Data Source=...."
也可能工作
答案 4 :(得分:0)
使用“Microsoft OLEDB Driver for SQL Server”对我们有用,但我也可以确认 Native Driver 11 也测试正常。
这是我们的场景:在我们禁用 TLS 1.0 和 1.1 并启用 TLS 1.2 后,使用“Microsoft OLEDB Provider for SQL Server”的 Crystal Reports 将不再连接。相反,您会收到一个 user/pw 提示,即使使用有效凭据也会失败。在我们的例子中,我们从嵌入了 Crystal 13 查看器的 ASP.NET v4.5.2 应用程序中运行 Crystal Reports。用户从报告列表中选择并运行它们,它们在启用 TLS 1.0 的情况下在没有提示的情况下运行。>
要解决此问题,我们必须在设计器中打开报告并将其报告从使用“Microsoft OLEDB Provider for SQL Server”转换为使用“Microsoft OLEDB 驱动程序”强> 用于 SQL Server”。
如果您在列表中没有看到驱动程序,这里是 SQL Server 的 OLEDB 驱动程序:https://docs.microsoft.com/en-us/sql/connect/oledb/download-oledb-driver-for-sql-server?view=sql-server-ver15
感谢 Dan Guzman,他在有些隐蔽的评论和上面的更新中提到了“司机”的存在。
答案 5 :(得分:0)
TLS 1.2 支持已添加到 Windows 中的 sqloledb
。见KB4580390。