【发布时间】:2017-06-11 07:32:46
【问题描述】:
我们的 ASP.NET 2.0 网站通过调用 Authorize.Net 的 API 来处理信用卡交易。 Authorize 已通知我们,在某个特定日期(即将公布),我们的客户端必须使用 TLS 1.2 协议进行 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
...我们添加了 SslProtocolsExtensions 枚举,您可以 用作设置 TLS v1.2、TLS v1.1 以及操作的选项 ServicePointManager.SecurityProtocol 属性的系统默认值 以 .NET 框架 2.0 SP2 版为目标时。
请注意,尽管有本文标题,但上面的引用不指的是 Windows Vista SP2 或 Windows 2008 SP2 操作系统,因为这些操作系统不支持 TLS v1.1 和1.2.
我已通过以下步骤实施并测试了我对知识库文章中指出的解决方案的理解:
- 在我们的 Windows Server 2008 R2 Web 服务器上启用了 TLS 1.2(并通过 ssllabs.com 确认)。
- 确认 SP2 实际上是为 .NET 框架 2.0 版安装的。
- 将引用的知识库文章中显示的两个源文件添加到我们的项目中(即 SecurityProtocolTypeExtensions.cs 和 SslProtocolsExtensions.cs)
- 在 API 调用上方的项目中输入以下代码行(来自知识库文章):System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12;
不幸的是,在运行应用程序时,我在上面#3 所示的代码行中遇到以下错误:
System.NotSupportedException:请求的安全协议不是 支持。
在这一点上,我很难过。我特别感谢有关如何推进此解决方案的任何见解,但我有兴趣了解您知道的任何其他方法,以允许来自 ASP.NET 2.0 应用程序的 API 调用利用 TLS 1.2。 (升级到 .NET 框架的更新版本是最后的手段。)
提前感谢您的帮助!
【问题讨论】:
标签: asp.net asp.net-2.0 authorize.net tls1.2