AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 895483
Accepted
Bemipefe
Bemipefe
Asked: 2018-02-04 01:04:12 +0800 CST2018-02-04 01:04:12 +0800 CST 2018-02-04 01:04:12 +0800 CST

SQL Server 2014 启用 TLS 1.1 和 TLS 1.2

  • 772

我有一个 Windows Server 2012 R2,它是一个带有 SQL Server 2014 (Express) 的 DC,更新到带有 CU10 12.2.5571.0(测试环境)的最新 SP2。我通过在路径中设置注册表项禁用了除TLS1.1和TLS1.2之外的所有协议:

HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols.

我最初只启用了 TLS1.2,但我还需要 TLS1.1 以向后兼容在同一域的另一台机器上运行的 Java 应用程序。为了使用 TLS1.2,需要特定的 JDBC 驱动程序,并且必须为 JDBC url 提供一个属性(请参阅此处的讨论)。

同时我想让应用程序与 TLS1.1 一起工作,所以我重新启用了它。但是,应用程序无法连接到数据库,SQL Server 似乎没有使用 TLS1.1。为了测试连接,我尝试了以下命令:

1)openssl s_client -connect <Server IP>:1433 -ssl3

2)openssl s_client -connect <Server IP>:1433 -tls1_1

3)openssl s_client -connect <Server IP>:1433 -tls_1_2

测试 1) 按预期失败(握手失败),而测试 2) 需要一些时间(大约 30 秒或更长时间)才能产生成功的响应。测试 3) 按预期产生了成功的输出。

我还尝试在客户端计算机上使用 Management Studio,并且只有在客户端和服务器上都启用了 TLS1.2 时连接才有效。否则,如果仅启用 TLS1.1,则会显示以下错误:

与服务器成功建立连接,但在登录过程中出现错误。(提供者:SSL Provider,错误:0 - 客户端和服务器无法通信,因为它们没有共同的算法。)

怎么可能?

我是否需要在安全通道上强制执行某些操作?

为什么 SQL Server 不再允许 TLS1.1 连接?

security
  • 2 2 个回答
  • 6083 Views

2 个回答

  • Voted
  1. Ricardo C
    2018-02-07T08:49:49+08:002018-02-07T08:49:49+08:00

    协议与算法不同。

    无论您如何配置 SQL Server,操作系统都必须允许协议并支持算法。

    有关更多信息,请阅读: https ://blogs.msdn.microsoft.com/sql_protocols/2007/06/29/ssl-cipher-suites-used-with-sql-server/

    确定客户端和服务器相互支持的最高级别协议。当前公认的协议从高到低依次为:TLS1.1、TLS1.0、SSL3.0、SSL2.0 客户端将向服务器提供其协商协议中的密码套件列表 服务器将选择最强的密码它能够从客户列表中支持的套件。

    您可以在此处找到有关 SSL 主题的最佳实践的更多信息 https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices

    如果您不喜欢摆弄 Windows 的注册表,您可以使用 Nartact 免费工具IIS Crypto来配置您的 Windows 服务器。IIS 部分无关紧要。这个工具实际上配置了操作系统。

    • 2
  2. Best Answer
    Bemipefe
    2018-02-16T09:30:25+08:002018-02-16T09:30:25+08:00

    我验证了为了使用协议 TLS1.1,必须设置以下键:

    • SHA哈希已启用(启用键设置为 1)

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\SHA

    • 启用TLS 1.0协议(客户端和服务器的Enabled键设置为 1,DisabledByDefault设置为 0)

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server

    注意:更改这些密钥后,重新启动机器,以便重置安全通道连接。

    如果禁用 SHA 哈希或 TLS 1.0 协议,则 TLS 1.1 协议会因未知原因停止工作。

    • 0

相关问题

  • OpenSSH 漏洞 [重复]

  • 选择什么安全套件?

  • 安全地授予对 SQL 2005 复制监视器的访问权限以创建快照

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • 如何将安全组添加到正在运行的 EC2 实例?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve