0

我有一个场景如下;

客户端 <--TLS 1.0- -> 服务器进程 <--- TLS 1.2 ---> 后端现有客户端需要继续与我的服务器进程通信 TLS 1.0(它们将在另一天升级)但是“服务器进程”需要使用 TLS 1.2 与后端​​通信。我已经对注册表进行了以下更改,但是我不确定是否需要启用所有 3 个版本 1.0、1.1 和 1.2,假设握手阶段将根据需要选择最高(正确)版本的 TLS。

我已经创建了 TLS1.0、TLS1.1 和 TLS 1.2 密钥,然后为每个密钥创建了客户端和服务器密钥。在每个下,我将 DisabledByDefault 设置为 0(32 位 DWORD),并将每个设置为 1(32 位 DWORD)。因此,所有 3 个版本的 TLS 都启用如下。这是正确的做法,还是我只需要启用 1.2 版本(客户端和服务器)并禁用所有其他版本?

注册表 看起来像这样 我正在运行 Windows Server 2008 R2 Service Pack 1,它是一个非常脆弱的环境,所以我需要在重新启动之前第一次做到这一点。除了这些更改,我不需要应用任何补丁,不是吗?

...\Protocols\TLS 1.2\Server] "Enabled"=dword:00000001
...\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000
...\Protocols\TLS 1.2\Client] "Enabled"=dword:00000001
...\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000
...\Protocols\TLS 1.1\Server] "Enabled"=dword:00000001
...\Protocols\TLS 1.1\Server] "DisabledByDefault"=dword:00000000
...\Protocols\TLS 1.1\Client] "Enabled"=dword:00000001
...\Protocols\TLS 1.1\Client] "DisabledByDefault"=dword:00000000
...\Protocols\TLS 1.0\Server] "Enabled"=dword:00000001
...\Protocols\TLS 1.0\Server] "DisabledByDefault"=dword:00000000
...\Protocols\TLS 1.0\Client] "Enabled"=dword:00000001
...\Protocols\TLS 1.0\Client] "DisabledByDefault"=dword:00000000

感谢一百万您的帮助。

亲切的问候

格雷厄姆

4

2 回答 2

0

客户端键是出站,服务器是入站连接。因此,您决定启用哪些协议以及使用哪种连接类型。

我会按照您上面所做的那样做,然后禁用作为入站连接的服务器密钥 TLS1.0,并让客户端 TLS1.0 --> TLS1.2 启用,因为您的后端仍然需要与 TLS1.0 和稍后处理。

如果它是一个 .NET 框架应用程序,您还需要为 32 位和 64 位启用 StrongEnCryption,否则它只使用 TLS1.0。


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001


Windows 2008 R2 及更高版本能够与 TLS1.1 和 TLS1.2 通信……较低的操作系统版本需要在前面有一个 PROXY。

祝你好运

于 2018-09-28T06:46:19.703 回答
0

忘记格雷厄姆 .... 使用例如SSLAB验证站点是否可公开访问之前和之后的更改.....否则我有一个 PowerShell 脚本来检查哪些版本已启用或未启用:-),但您仍然需要REBOOT服务器在应用和使用更改之前。

于 2018-09-28T06:50:06.497 回答