在一个实时系统中,我们使用C#中的SqlConnection对象与不同的MSSQL服务器建立多个连接。
当客户端正在将其SQL服务器更新到TLS 1.2的过程中,我想知道是否有一种方法可以确定活动连接上正在使用哪个TLS实现。
如果可能的话,我希望完全用C#来实现这一点,但只要最终结果是一个自包含的应用程序,我就可以使用其他语言。
这样做的目的是为客户端提供一个快速测试工具,该工具有助于确保在对实时系统进行更改之前,软件在集成环境中与TLS 1.2一起正常工作。
我已经花了几个小时研究这个问题,但到目前为止还找不到任何有用的东西。我找到的所有资源都是针对ASP开发人员的,并没有详细介绍如何在桌面应用程序中直接连接到SQL服务器。
应用程序使用的是TLS4.5,因此.NET 1.2应该是可用的。
非常感谢
发布于 2017-04-03 18:36:57
对于那些偶然遇到这个问题并寻找解决方案的人来说,Ed Harper发布的评论是正确的- I don't think there's a way to determine the TLS version in use by a connection from within SQL Server. You might have to resort to packet capture to determine the TLS version。
当使用TLS4.5或更高版本时,支持.NET 1.2,并且如果建立到显式指定TLS1.2的服务的连接,则该连接应该正常工作。
由于TLS应用于传输OSI层,因此包捕获是确认TLS版本的正确方法,如Ed Harper - https://networkengineering.stackexchange.com/questions/20227/find-ssl-version-in-tcp-packets-in-established-tcp-connection发布的链接中所述。
因为我们的代码是为TLS4.5编写的,所以切换到强制执行.NET 1.2不需要任何代码更改。
发布于 2019-10-30 03:45:05
发布于 2017-03-30 21:07:11
您可以使用以下查询让您的C#应用程序获取产品版本:
SELECT SERVERPROPERTY('ProductVersion'), SERVERPROPERTY('ProductLevel')然后,对于每个产品级别/版本,将此版本与Microsoft提供的最低版本进行比较(您必须自定义方法,以检查每个级别的内部版本是否至少一样高)。
SQL Server版本-支持TLS1.2的第一个内部版本
SQL Server 2014 SP1 - 12.0.4439.1
SQL Server 2014 SP1 GDR - 12.0.4219.0
SQL Server 2014 RTM - 12.0.2564.0
SQL Server 2014 RTM GDR - 12.0.2271.0
SQL Server 2012 SP3 GDR - 11.0.6216.27
SQL Server 2012 SP3 - 11.0.6518.0
SQL Server 2012 SP2 GDR - 11.0.5352.0
SQL Server 2012 SP2 - 11.0.5644.2
SQL Server 2008 R2 SP3 - 10.50.6542.0
SQL Server 2008 R2 SP2 GDR (IA-64 only) - 10.50.4047.0
SQL Server 2008 R2 SP2 (IA-64 only) - 10.50.4344.0
SQL Server 2008 SP4 - 10.0.6547.0
SQL Server 2008 SP3 GDR (IA-64 only) - 10.0.5545.0
SQL Server 2008 SP3 (IA-64 only) - 10.0.5896.0来源:https://support.microsoft.com/en-us/help/3135244/tls-1.2-support-for-microsoft-sql-server
https://stackoverflow.com/questions/43117949
复制相似问题