.NET dll 使用不同的 TLS 版本

.NET dll using different TLS versions

我们有一个 Microsoft Access 应用程序,它整合了我们在 eBay 上的许多活动。我通过 Access 引用的几个 com dll 来做到这一点。应用程序的一部分将清单从我们的库存发布到 eBay。这已经工作了至少 8 年。最近 eBay 将其服务器更改为需要 TLS 1.2,我们开始收到“请求已中止:无法创建 SSL/TLS 安全通道”消息。查了一下,MS 说将 dll 项目升级到 Framework 4.7 或更高版本将会修复。我升级了方案框架,重新编译。

当我从 VS 中内置的 win 表单测试应用程序调用时,升级后的 dll 可用于 eBay。当我从 Access 应用程序调用时,我仍然收到 TLS 错误。当我在 Fiddler 中查看与 eBay 的通信时,从 .NET win 表单测试应用程序调用时来自 dll 的调用使用 TLS 1.2。当从 Access 调用 dll 时,它仍在使用 TLS 1.0。 Access 应用程序和 .NET 测试应用程序都引用相同的 dll 文件。

问:调用dll的应用程序会影响使用的TLS版本吗?关于可能导致同一 dll 使用不同 TLS 版本的任何想法?

嗯,我不认为 VBA/Office 作为宿主程序会更改 TLS 设置。但您可以考虑尝试此注册表编辑:

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
  "SystemDefaultTlsVersions" = dword:00000001
  "SchUseStrongCrypto" = dword:00000001

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

我相信你也必须re-start你的电脑才能使以上生效。