我们的ASP.NET 2.0网站通过调用Authorize.Net的API来处理信用卡交易.授权已通知我们,在确定的日期,我们的客户必须使用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最.NET框架-2.0-SP2-ON-Windows的Vista的SP2和服务器-2008-SP2
...我们添加了SslProtocolsExtensions枚举,您可以将其用作设置TLS v1.2,TLS v1.1的选项,以及针对.NET Framework 2.0 SP2时ServicePointManager.SecurityProtocol属性的操作系统默认值.
请注意,尽管有本文的标题,但上述引用并未涉及Windows Vista SP2或Windows 2008 SP2操作系统,因为这些操作系统不支持TLS v1.1和1.2.
我已经通过以下步骤实现并测试了我对KB文章中指出的解决方案的理解:
在我们的Windows Server 2008 R2 Web服务器上启用了TLS 1.2(并通过ssllabs.com确认).
确认SP2实际上是为.NET framework 2.0版安装的.
将引用的KB文章中显示的两个源文件添加到我们的项目中(即SecurityProtocolTypeExtensions.cs和SslProtocolsExtensions.cs)
输入以下代码行(从KB文章)到API调用上方的项目:System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12;
不幸的是,在运行应用程序时,我在上面第3项中显示的代码行上遇到以下错误:
System.NotSupportedException:不支持请求的安全协议.
在这一点上,我很难过.我特别感谢有关如何推进此解决方案的任何见解,但我有兴趣了解您所知道的任何其他方法,以允许来自ASP.NET 2.0应用程序的API调用来使用TLS 1.2.(升级到更新版本的.NET框架是最后的选择.)
在此先感谢您的帮助!
我们不得不使用我们的.NET 2.0应用程序迁移到TLS 1.2,我们不想将代码移植到.NET 4.5/4.6.经过几天的研究和发现这篇文章后,我们找到了解决方案.这篇文章引用了错误的HOTFIX.要在Server 2008 R2上使用TLS 1.2 for .NET 2.0,您需要这个HOTFIX:https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-在最.NET框架
它引用了3.5.1框架,但ALSO适用于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
希望这可以帮助
对于找到这个帖子的其他人,我能够使用上面原始问题中详述的相同步骤(#1-#4)来使用TLS 1.2来处理.Net 3.5.一旦我将补丁应用到Win 2012服务器(我的共享托管公司很适合应用),然后添加了代码行以在我的API调用之前启用TLS 1.2,它立即起作用:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12;