在 .Netframework 2.0 中的 Windows 可执行文件上启用 TLS 1.2

问题描述 投票:0回答:2

我的桌面(Windows 10 桌面)上有一个在 .Net Framework 2.0 (v2.0.50727) 中构建的 Windows 可执行应用程序,我需要启用与服务器的 TLS 1.2 通信(服务器当前仅支持 TLS 1.2 流量)现在正在阻止该应用程序:

以下是有关申请的一些细节:

  1. exe 文件在安装在我的桌面上的 SAP SQL Anywhere 12 上调用 dbmlsync.exe(我在互联网上读到 SQL Anywhere 12 默认支持 TLS 1.2),所以应该不是问题。
  2. 我可能无法更改可执行文件的代码(因为这是非常旧的代码),并且我正在检查强制应用程序使用操作系统上启用的 TLS 的方法。

以下是我所做的更改:

  1. 我已对可执行文件的配置文件进行了更改,以便在运行时使用 .NetFramework 4.0 并使用操作系统上默认启用的 TLS。 (.Netframework 4.0 在我的桌面上可用)。

  2. 对我的桌面注册表进行了更改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework 2.0.50727 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework 2.0.50727 创建一个新条目 SystemDefaultTlsVersions,并将 DWORD 值设置为 1。

在以下位置创建注册表项 DefaultSecureProtocols:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp 对于 TLS 1.2,将 DWORD 值设置为 800。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\协议 创建了一个名为 TLS 1.2 的文件夹,并在其下创建了两个子项 Client 和 Server,并且两者的 DisabledByDefault 均为 0,Enabled 为 1。

完成所有这些更改后,我重新启动了计算机并使用 Netmon 进行了验证,应用程序仍然以 TLS 1.1 的形式发送协议。有人可以帮忙吗?我读过很多问题,无需更改代码即可启用 .Net 2.0 应用程序以使用 TLS 1.2。我尝试了各种建议,但没有什么对我有太大帮助

ssl tls1.2
2个回答
0
投票

我不知道您在哪里看到 SQL Anywhere 12 默认支持 TLS 1.2,但这是错误的。

“SQL Anywhere Web 服务器支持使用 SSL 版本 3.0 和 TLS 版本 1.0 的 HTTPS 连接。”关于 SQL Anywhere 12 文档

因此,不幸的是,要工作,您的服务器必须支持 TLS 1.0。

  1. SQL Anywhere 12 -> TLS 1.0
  2. SQL Anywhere 16 -> TLS 1.1
  3. SQL Anywhere 17 -> TLS 1.2

0
投票

分步指南:

  1. 前往运行(按 Win + R)

  2. 输入 regedit 并按 Enter 键。注册表编辑器窗口将打开。

  3. 或在 Windows 搜索栏中搜索注册表编辑器。

  4. 执行以下步骤启用 TLS 1.2

启用 TLS 1.2

  1. 转到以下路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

  2. 右键单击右侧窗格中的空白区域,然后选择“新建”>“密钥”

  3. 将新密钥命名为 TLS 1.2

  4. 再次右键单击右侧空白处,添加两个新键,分别命名为Client和Server

  5. 选择Client key,在右侧右键单击,选择New -> DWORD (32-bit) Value

  6. 将 DWORD 命名为 DisabledByDefault,右键单击它,然后选择修改。基数应设置为十六进制,值设置为 0:

  7. 创建一个名为 Enabled 的新 DWORD。基数应设置为十六进制,值设置为 1

  8. 对服务器密钥重复此过程,使用相同的值创建相同的 DWORDS

  9. 转到以下路径:[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft.NETFramework 4.0.30319]

  10. 右键单击 v4.0.30319 并选择新建 -> DWORD(32 位)值

  11. 将 DWORD 命名为 SystemDefaultTlsVersions,右键单击它,然后选择修改。基数应设置为十六进制,值设置为 1

  12. 类似地创建新的DWORD SchUseStrongCrypto,右键单击它,然后选择修改。基数应设置为十六进制,值设置为 1

  13. 转到以下路径:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework 4.0.30319]

  14. 右键单击 v4.0.30319 并选择新建 -> DWORD(32 位)值

  15. 将 DWORD 命名为 SystemDefaultTlsVersions,右键单击它,然后选择修改。基数应设置为十六进制,值设置为 1。

  16. 类似地创建新的DWORD SchUseStrongCrypto,右键单击它,然后选择修改。基数应设置为十六进制,值设置为 1。

  17. 重新启动系统。

© www.soinside.com 2019 - 2024. All rights reserved.