【问题标题】:SecurityProtocol Tls 1.2 in .NET 2.0.NET 2.0 中的安全协议 Tls 1.2
【发布时间】:2017-10-23 09:21:00
【问题描述】:

我有一个为 .NET 2.0 和 4.5 编译的应用程序,它们需要使用 Tls 1.2 SecurityProtocol 连接到 API。 .NET 4.5 支持 Tls 1.2,但 .NET 2.0 不支持,所以我发现这个技巧显然使 Tls 1.2 在 .NET 2.0 中工作:

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

到目前为止,我所做的唯一测试是在我的机器上进行的,该机器上安装了 .NET 4.5,因此我不确定这是否真的适用于仅安装了 .NET 2.0 的机器。

所以我的问题是,上述解决方案真的适用于 .NET 2.0 吗?如果是这样,为什么以及如何?即使我运行的是 .NET 2.0 编译的应用程序,由于我在其上安装了 .NET 4.5 版本,我担心我的机器上会出现误导性测试结果。

【问题讨论】:

    标签: c# asp.net .net


    【解决方案1】:

    不 - 正如您所怀疑的那样,它只是因为您也安装了 .NET 4.5 而起作用。

    请记住,除非您在可执行文件的app.config 文件中明确指定运行时版本,否则将使用框架的最高安装版本。我敢肯定,如果您通过配置文件强制您的应用程序使用 .NET 2.0,它会在运行并遇到您突出显示的代码行时抛出异常,因为 2.0 没有值 3072 (@ 987654322@) 在其 SecurityProtocolType 枚举版本中定义。

    .NET 2.0 的唯一选择是支持 TLS 1.2 的第三方库,尽管我更好奇为什么不能将应用程序升级到 .NET 4.5 或更高版本。

    【讨论】:

      【解决方案2】:

      Microsoft 在 .NET 3.5(即 .NET 2.0)中发布支持 TLS 1.2 的补丁

      看看下面的链接:https://support.microsoft.com/en-ca/help/3154519/support-for-tls-system-default-versions-included-in-the--net-framework

      您需要更新的特定注册表项位于上述文章中。我已经在开发和生产环境中运行了它,它可以正常工作。您还需要确保客户端和服务器上的默认协议也得到更新。这篇文章应该有你需要的一切。

      【讨论】:

      • 感谢您的链接,但这不是一个选项。
      猜你喜欢
      • 2017-03-08
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 2021-03-26
      • 2015-11-30
      • 1970-01-01
      • 2015-04-01
      相关资源
      最近更新 更多