You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未启用TLS 1.0时SSMS 18无法连接SQL Server 2014 SP3的配置咨询

核心问题定位

当前连接故障由三层原因叠加导致:

  • 未安装TLS1.2适配更新的SQL Server 2014实例不会在Schannel层注册TLS1.2监听端点,仅响应TLS1.0/1.1握手请求
  • Windows Server 2016默认未主动开启TLS1.2服务端监听配置,Schannel组件不会向上层应用暴露TLS1.2握手能力
  • 客户端.NET框架未强制启用强加密时,部分旧版SQL连接驱动会优先尝试TLS1.0握手,被服务器拒绝后直接抛出连接错误,不会自动尝试TLS1.2协议
前置版本/组件要求

服务器端(Windows Server 2016 + SQL Server 2014 SP3)

  • 将SQL Server 2014 SP3升级到SP3 CU4及以上版本,初始SP3版本存在TLS1.2握手内存泄漏bug,高版本已修复且完整支持TLS1.2
  • 安装Microsoft OLE DB Driver for SQL Server 18.x版本,替换系统自带的旧版SQL Server Native Client 11.0(旧版客户端最高仅支持TLS1.1)
  • 安装Windows Server 2016发布的最新月度累积更新,修复初始RTM版本Schannel组件的TLS1.2握手兼容性问题

客户端(Windows 10 + SSMS 18 + .NET Framework 4.8)

  • 无需升级.NET Framework 4.8,该版本原生支持TLS1.2
  • 同服务器端一致,安装Microsoft OLE DB Driver for SQL Server 18.x版本,SSMS 18会优先调用该驱动建立连接
  • 确认Windows 10未被第三方优化工具禁用Schannel组件的TLS1.2能力,Win10 1809及以后版本默认开启TLS1.2客户端模式
服务器端配置步骤
  1. 打开注册表编辑器,定位到路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
  2. 新建TLS1.2相关子项与键值:
    • 新建子项TLS 1.2\Server,在项下创建2个DWORD(32位)值:
      • Enabled,数值数据设为1
      • DisabledByDefault,数值数据设为0
    • 新建子项TLS 1.2\Client,在项下创建2个DWORD(32位)值:
      • Enabled,数值数据设为1
      • DisabledByDefault,数值数据设为0
  3. (符合安全规范必做)禁用旧版TLS协议:
    对TLS 1.0、TLS 1.1分别创建Server和Client子项,每个子项下均创建2个DWORD(32位)值:
    • Enabled,数值数据设为0
    • DisabledByDefault,数值数据设为1

注意:Schannel协议配置修改后必须重启Windows Server服务器才能生效,重启前提前保存业务侧数据。

  1. 服务器重启完成后,打开SQL Server配置管理器,定位到对应实例的「SQL Server网络配置」,将Force Encryption选项设置为是,证书可选择企业CA颁发的可信证书,无专用证书时SQL Server会在服务启动时自动生成自签名证书用于TLS握手。
  2. 重启SQL Server数据库引擎服务与SQL Server Browser服务,打开Windows事件查看器的应用程序日志,找到来源为MSSQLSERVER的事件,确认无证书加载、端点监听报错,即说明服务端TLS1.2配置正常。
客户端(Win10笔记本)配置步骤
  1. 打开注册表编辑器,定位到路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
  2. 确认/配置TLS协议键值:
    • TLS 1.2\Client子项下,设置Enabled=1、DisabledByDefault=0
    • (符合安全规范必做)TLS 1.0、TLS 1.1的Client子项下,设置Enabled=0、DisabledByDefault=1
  3. 配置.NET框架强加密规则,强制所有.NET应用优先使用TLS1.2:
    • 定位到路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319,新建DWORD(32位)值SchUseStrongCrypto,数值数据设为1
    • 定位到路径HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319,新建DWORD(32位)值SchUseStrongCrypto,数值数据设为1

    第二条配置针对32位应用生效,SSMS 18为32位程序,该键值必须配置否则强加密规则不生效。

  4. 重启笔记本,重启后打开SSMS 18,在连接窗口的「连接属性」页勾选「加密连接」选项,输入实例信息正常连接即可。
连接有效性验证

连接成功后在SSMS中执行如下SQL语句:

SELECT session_id, connect_time, net_transport, encrypt_option, auth_scheme 
FROM sys.dm_exec_connections 
WHERE session_id = @@SPID

返回结果中encrypt_option字段值为TRUE时,说明连接已走加密通道;可同时在服务器端性能监视器中添加Schannel类别下的「TLS 1.2 Server Handshakes」计数器,发起连接时计数器数值上涨即可确认当前连接使用TLS1.2协议,未调用TLS1.0。

内容的提问来源于stack exchange,提问作者ChrisRG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:06:34