【发布时间】:2020-09-22 14:42:59
【问题描述】:
我正在研究 TLS1.2 SQL SERVER 加密,并在服务器中进行了以下注册表更改。
- 关于启用 TLS 1.2 协议
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
- 关于将强制加密设置为 YES
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib]
"ForceEncryption"=dword:00000001
3.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\GeneralFlags\Flag1\Force protocol encryption value:0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\GeneralFlags\Flag2\Trust Server Certificate value:0
之后,我通过 openssl 创建了自签名证书并绑定到 SQL Server 配置。这些所有更改都在服务器中完成。我的要求是,如果客户端没有安装相同的证书(导出的证书)或公钥证书,那么它应该忽略来自服务器的连接。
请提出一种方法来满足我的要求,还是我遗漏了什么?
我没有对客户端系统进行任何更改。
我们将永远感谢您的帮助。
【问题讨论】:
-
TLS 不是身份验证协议,它用于加密连接。在 TLS 中,客户端启动到服务器的连接,并验证服务器提供的证书。如果证书是自签名的并且 SQL Server 不是“受信任的主机”,那么,至少在 SSMS 中,您会收到一条警告消息(类似于“这不是受信任的证书”),这是一样的如果您导航到具有自签名 SSL 证书的网站,您将在 Web 浏览器中收到消息。客户如何从那里获得收益取决于客户。
-
非常感谢 Alex 的宝贵回复,我们也收到了来自 Microsoft 的相同回复。他们建议了另一种身份验证方法,即 Sql server 中的扩展保护,但我不这样做,所以它在我的独立客户端和服务器中是可行的。它需要域服务器和身份验证服务器。如果您对扩展保护有任何建议,请向我推荐 alex。再次感谢亚历克斯 :)
-
我从未在 Sql server 中使用过扩展保护。
-
没问题 Alex,非常感谢您的帮助 :)
标签: sql-server tls1.2 database-administration