【问题标题】:How to enable TLS 1.2 support in SQLCLR 2?如何在 SQLCLR 2 中启用 TLS 1.2 支持?
【发布时间】:2020-10-17 00:07:22
【问题描述】:

我需要在安装在 SQL Server 2008 R2 上的 SQLCLR 程序集中强制使用 TLS 1.2。 我已阅读 the answer 解释如何以编程方式启用 TLS 1.2。

不幸的是,添加System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; 会导致错误不支持请求的安全协议,即使 Windows Server (2008 R2) 是最新的(所以提到包含 Microsoft 的修补程序) .

有人在 SQLCLR 程序集中使用相同的方法吗?有没有其他方法可以在此类程序集中支持 TLS 1.2?

程序集的目标框架设置为:.NET Framework 3.5

【问题讨论】:

    标签: sql-server-2008-r2 .net-3.5 tls1.2 sqlclr


    【解决方案1】:

    您链接到的答案实际上有以下代码,看起来类似于我自己尝试并开始工作的代码,实际上与使用SecurityProtocolTypeExtensions 相同:

    将此添加到我的代码 (C#):

    public const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
    public const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
    ServicePointManager.SecurityProtocol = Tls12
    

    您确实尝试过吗?此外,如果 SQL Server 在 Windows Server 2008 R2 上运行,操作系统处于什么 SP 级别?阅读有关“Support for TLS System Default Versions included in the .NET Framework 3.5.1 on Windows 7 SP1 and Server 2008 R2 SP1”的知识库文章(链接在您链接到的答案中),“System.NotSupportedException:不支持请求的安全协议”错误有几种可能性:

    1. 未安装修补程序(您是否在更新 .NET 后重新启动了操作系统?)
    2. 您的 SQL Server 在 Windows Server 2008 上运行,而不是 2008 R2

    如果这两种情况都不是,那么明确定位 .NET 3.5.1 可能会起作用(尽管我认为没有必要)。虽然您确实提到了已经针对 3.5.1,但我怀疑您在项目的 app.config 文件中执行了此操作,在这种情况下,由于 SQL Server 不知道该文件,因此它不会产生任何影响。 SQL Server 使用自己的应用程序配置文件,位于:

    “C:\Program Files\Microsoft SQL Server\MSSQLxx.yyyyy\MSSQL\Binn\sqlservr.exe.config”

    地点:

    • "xx" = 2 位 SQL Server 版本:2008 / 2008 R2 = 10、2012 = 11、2014 = 12,依此类推。
    • "yyyy" = 实例名称。默认实例名称为“MSSQLSERVER”。

    更改该配置文件后,您至少需要通过DBCC FREESYSTEMCACHE(N'ALL'); 重新加载用户应用程序域。这应该就足够了。但是,为了 100% 确定您可以重新启动 SQL Server 实例。

    【讨论】:

    • 事实证明,即使系统显示它是最新的(Windows Server 2008 R2 SP1),也可能没有安装提到的修补程序。我已经要求管理员手动安装补丁,我将再次检查它。不过,感谢您的回答,它确保我这不是 SQLCLR 限制,但可能是无效配置。安装补丁后我会标记这个答案。
    • @gis "hotfix 可能未安装,即使系统显示它是最新的":这可能只是表明需要重新启动操作系统,如果它看起来 像已安装但不实际 像已安装。祝你好运。
    • 管理员已确认未安装此修补程序。目前,手动安装后,它按预期工作。所以我猜提到的“最新”消息可能并不完全表明系统是“通过 Windows 更新完全最新”。顺便说一句,我很确定系统在自动更新后重启了几次,所以我认为不是这个原因。
    • @gis 我认为修补程序不是“正常”更新的一部分。我认为它们也总是带有“仅在真正需要时才安装,如果一切正常则不要安装”警告。
    猜你喜欢
    • 2020-02-15
    • 2018-08-23
    • 2019-08-03
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    相关资源
    最近更新 更多