SQL Server 2014(Server 2012 R2)禁用SSLv3/TLSv1.0后故障求助
解决SQL Server 2014在禁用SSLv3/TLS1.0后的连接问题
嘿,我太懂你这种踩坑的感觉了——刚按安全团队要求禁用了旧协议,以为过了扫描就万事大吉,结果一堆问题找上门,简直头大。咱们先理清楚根源,再一步步解决。
问题根源
SQL Server 2014本身对TLS 1.1/1.2的支持不是默认全开的,哪怕你把系统和SQL都更到最新。它出厂时默认依赖系统的旧协议(SSLv3/TLS1.0),要切换到新协议,必须满足两个条件:安装对应补丁+配置注册表强制启用新协议。你直接禁用旧协议但没做这两步,SQL Server自然没法正常用加密连接,就出问题了。
具体排查修复步骤
1. 确认SQL Server 2014的TLS支持补丁
SQL Server 2014需要安装**SP2及之后的累积更新(CU3+)**才能完整支持TLS 1.1/1.2。先查一下你的SQL版本:
打开SSMS执行这个命令:
SELECT @@VERSION
对照版本号确认是否符合要求——如果是SP1或更早的版本,必须先升级到SP2再装最新CU;如果已经是SP2及以上,确保装了包含TLS支持的CU。
2. 配置注册表强制启用TLS 1.1/1.2
哪怕装了补丁,SQL Server也不会自动切换到新协议,得手动改注册表:
- 打开注册表编辑器(
regedit),导航到对应实例的路径:
(默认实例的话,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.<你的实例名>\MSSQLServer\SuperSocketNetLib<你的实例名>替换成MSSQLSERVER) - 右键新建DWORD(32位)值,命名为
EnabledProtocols,设置值为0x00000A00(这个值对应启用TLS 1.1和TLS 1.2) - 如果是64位系统,还要同步修改Wow6432Node下的相同路径:
做同样的配置。HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server\MSSQL12.<你的实例名>\MSSQLServer\SuperSocketNetLib
3. 检查SQL Server服务账户权限
有时候禁用旧协议后,SQL Server服务账户可能没权限访问加密组件,导致加载新协议失败。把服务账户加入Cryptographic Operators本地组,然后重启SQL Server服务试试。
4. 验证客户端连接配置
如果是远程客户端(比如SSMS)连不上,也要确保客户端支持TLS 1.1/1.2:
- 旧版SSMS(比如2014版)需要装补丁才能支持TLS 1.2,直接升级到最新版SSMS是最省心的办法;
- 客户端系统也要确保启用了TLS 1.1/1.2(可以用IISCrypto再检查一遍)。
5. 确认配置生效
修改完所有配置后,重启SQL Server服务,然后:
- 看SQL Server错误日志(安装目录下的
LOG文件夹里的ERRORLOG),搜索SSL或TLS,如果看到“Using certificate [Cert Hash(sha1)] ... with TLS protocol version 1.2”这类日志,说明新协议加载成功; - 用
netsh ssl show protocols命令查看系统当前启用的协议,确认TLS 1.1/1.2是开启状态。
额外提醒
- 改注册表前一定要备份,别手滑改错路径;
- 如果用了Always On集群,所有节点都要做同样的配置,不然集群会出问题;
- 测试的时候先在非生产环境验证,没问题再推到生产。
内容的提问来源于stack exchange,提问作者Ty.
相关产品推荐
相关产品推荐

