我们有一个系统需要提供数据库和 Web 服务。我们希望尽可能地锁定 TLS 安全设置。它在 Windows Server 2008 R2 上运行 MS SQL 2008。
我知道 SQL Server 2008 不支持任何高于 TLS 1.0 的协议。但是,我仍然希望 Web 服务拒绝传入的 TLS 1.0 协商尝试。不过,据我所知,两者似乎都是通过相同的 SCHANNEL 注册表项进行控制的。
有没有办法在同一系统上分别控制 MSSQL 和 IIS 的 TLS 协商,以便允许 MSSQL 使用 TLS 1.0,但强制 IIS 仅使用 TLS 1.1/1.2?
答案1
这是一个常见的烦恼,不仅限于 SQL,如果您的 Web 服务器需要连接到不支持 TLS 1.1 或 1.2 的第三方(Web 服务等),也可能会发生这种情况。我们解决这个问题的方法是在 Web 服务器前面使用负载平衡器 (MS ARR)。ARR 节点已锁定 SSL 配置以仅支持 TLS 1.1 和 1.2,但实际 Web 节点上仍启用 TLS 1.0。ARR 集群站点位于 DMZ 中,代理位于另一个区域中的 Web 服务器。
答案2
Windows 服务器都使用 SCHANNEL 安全提供程序。唯一可能解决这个问题的方法是,至少您的一款产品提供自己的安全提供程序。IIS 和 MSSSQL 都没有这样做。我还没有见过一款 Microsoft 产品这样做。
我建议你咬紧牙关,将其分割到两台服务器上。如果担心物理硬件,可以考虑设置 hyperv 和两台虚拟机。
如果失败了,您可能会发现设置某种反向代理(比如 Apache)可能会有所帮助。