asp.net - 如何在 ASP.NET 2.0 应用程序中为 API 调用启用 TLS 1.2?

标签 asp.net asp.net-2.0 authorize.net tls1.2

我们的 ASP.NET 2.0 网站通过调用 Authorize.Net 的 API 来处理信用卡交易。 Authorize 已通知我们,在即将宣布的特定日期,我们的客户必须使用 TLS 1.2 协议(protocol)进行 API 调用。

Microsoft 似乎表明可以在这篇 10-22-16 KB 文章中找到解决方案:https://support.microsoft.com/en-us/help/3154517/support-for-tls-system-default-versions-included-in-the-.net-framework-2.0-sp2-on-windows-vista-sp2-and-server-2008-sp2

...we have added the SslProtocolsExtensions enumeration that you can use as an option for setting TLS v1.2, TLS v1.1, as well as operating system defaults for the ServicePointManager.SecurityProtocol property when targeting .NET framework version 2.0 SP2.

请注意,尽管本文有标题,但上面的引用并非指的是 Windows Vista SP2 或 Windows 2008 SP2 操作系统,因为这些操作系统不支持 TLS v1.1 并且1.2.

我已通过执行以下步骤实现并测试了我对知识库文章中指出的解决方案的理解:

  1. 在我们的 Windows Server 2008 R2 网络服务器上启用了 TLS 1.2(并通过 ssllabs.com 确认)。
  2. 确认 SP2 实际上是针对 .NET Framework 2.0 版安装的。
  3. 将引用的知识库文章中显示的两个源文件添加到我们的项目中(即 SecurityProtocolTypeExtensions.cs 和 SslProtocolsExtensions.cs)
  4. 在 API 调用上方的项目中输入以下代码行(来自知识库文章):System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12;

不幸的是,在运行应用程序时,我在上面第 #3 项中显示的代码行中遇到以下错误:

System.NotSupportedException: The requested security protocol is not supported.

这下我就傻眼了。我特别感谢有关如何推进此解决方案的任何见解,但我有兴趣了解您所知道的允许从 ASP.NET 2.0 应用程序进行 API 调用以利用 TLS 1.2 的任何其他方法。 (升级到更新版本的 .NET 框架是最后的手段。)

预先感谢您的帮助!

最佳答案

我们必须使用 .NET 2.0 应用程序迁移到 TLS 1.2,并且我们不想将代码移植到 .NET 4.5/4.6。经过几天的研究和看到这篇文章后,我们找到了解决方案。这篇文章引用了错误的 HOTFIX。要使 TLS 1.2 在 Server 2008 R2 上适用于 .NET 2.0,您需要此 HOTFIX:https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-.net-framework

它引用 3.5.1 框架,但也适用于 2.0 框架。安装修补程序后,您可以按照指示在服务器上进行注册表更改,或者在应用程序中进行代码更改以直接引用 TLS 1.2。

C# ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

VB ServicePointManager.SecurityProtocol = DirectCast(3072,System.Net.SecurityProtocolType)

对于其他操作系统,请查看 Troy Starr 的帖子: https://community.qualys.com/thread/16917-net-framework

希望这有帮助

关于asp.net - 如何在 ASP.NET 2.0 应用程序中为 API 调用启用 TLS 1.2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41863129/

相关文章:

c# - 如何获取 HttpResponse 大小

php - TLS v1.2 curl 调用是否需要升级服务器证书

e-commerce - Authorize.net CIM 的替代方案

asp.net - 如何在 ASP.NET 4 Web 表单网站中利用 ServiceStack session /缓存?

forms-authentication - ASP.NET 表单例份验证 - 何时使用?

asp.net - 在我的 UpdatePanel 完成加载其 DOM 元素后,如何从我的代码隐藏执行 JavaScript?

asp-classic - asp到asp.net的迁移(c#.net)

Authorize.net AIM 退款交易测试模式

asp.net - 如何使用 LinkBut​​ton 提交表单?

c# - Entity Framework : How to set model as Serializable in Entity Framework