3

我们要求在所有服务器上使用 TLS1.2。这意味着使用下面的注册表设置强制 TLS1.2 系统范围。当我设置这些设置并重新启动服务器时,我在 BizTalk Administrator 中展开 BizTalk Group 菜单时收到以下错误消息。在这个特定的环境中,一切都在一个操作系统/服务器上运行。请记住,如果我在注册表中启用 TLS1.0,一切正常。

我已经阅读了几篇文章,指出自从 .NET 4.5 以来,支持 TLS1.1/1.2 所以......这里有什么问题?

BizTalk 管理员失败 在此处输入图像描述

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
"DisabledByDefault"=dword:00000001
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
"DisabledByDefault"=dword:00000001
"Enabled"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[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

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

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

操作系统:Windows Server 2016 SQL 版本:SQL Server 2016 BizTalk 版本:BizTalk Enterprise 2016 CU3 .NET 版本 4.7

4

1 回答 1

2

更新:使用BizTalk 2016或CU5的功能包 2支持它。

原始答案不幸的是,根据 Microsoft Rajshekher-BT 在Does BizTalk Server 2013 support TLS1.2 中的回答,您不能这样做。见下文。

我在用户之声上提出了它(但那个网站现在已经消失了)

BizTalk 核心引擎需要 TLS 1.0 来操作主机,因此您无法在注册表中禁用 TLS。但是,您可以同时启用 TLS 1.0 和 TLS 1.2,并让基于 .NET/WCF 的适配器更喜欢使用带有 SchUseStrongCrypto=1 注册表项的 TLS 1.2。

一些 Web 服务器可能会尝试协商,而另一些则在第一次尝试时失败。如果您在不同的 WCF http 端点中有不同的 TLS 设置,您可以使用 WCF 自定义行为来设置。然后,您应该将所有 TLS 1.0 保留在一个主机中,并将所有 TLS 1.2 集成端点保留在另一台使用的主机中。
1. 确保同时启用 TLS 1.0 和 TLS 1.2
2. 不要设置 SchUseStrongCrypto 注册表项。
3. 此时的默认行为将是 TLS 1.0(回退到 SSL3),因此对于需要 TLS 1.2 的任何 WCF 发送端口,使用 WCF 自定义发送端口中的自定义端点行为设置 System.Net.ServicePointManager.SecurityProtocol 属性.

如果您想允许回退逻辑,您可以按如下方式进行 OR: System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls | System.Net.SecurityProtocolType.Ssl3;
最好为 TLS 1.0 提供一种自定义行为,为 TLS 1.2 提供一种自定义行为,这样您就可以明确并知道您使用的是什么,并且当某些事情发生变化时它会失败。确保不要在同一主机中混合不同的 WCF 行为,因为 ServicePointManager 是全局进程设置。

就我个人而言,我使用了可配置的端点行为,详见Salesforce 禁用 TLS 1.0 – 如何通过 BizTalk 使其适用于 API 调用

于 2017-10-01T17:17:01.440 回答