如何在.Net 3.5框架中实现安全协议TLS 1.2

随着Paypal更新了他们的响应,我需要在.NET 3.5框架上的现有应用程序中将安全协议TLS更新到v1.2。 在现有代码中更新此更改所需的更改,我无法将应用程序更新到更新的框架。

我正在使用VS 2008与.net 3.5.30729.4926。 我所要做的就是:

添加import:

Imports System.Security.Authentication Imports System.Net 

将其添加到我的代码(C#):

 public const SslProtocols _Tls12 = (SslProtocols)0x00000C00; public const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12; ServicePointManager.SecurityProtocol = Tls12 

VB.net版本:

 Const _Tls12 As SslProtocols = DirectCast(&HC00, SslProtocols) Const Tls12 As SecurityProtocolType = DirectCast(_Tls12, SecurityProtocolType) ServicePointManager.SecurityProtocol = Tls12 Dim wbrq As HttpWebRequest Dim wbrs As HttpWebResponse Dim sw As StreamWriter Dim sr As StreamReader Dim strResult As String 'Create a new HttpWebRequest object. wbrq = WebRequest.Create(strURL) wbrq.Method = "POST" wbrq.ContentLength = DataString.Length wbrq.ContentType = "application/x-www-form-urlencoded" 'upload data sw = New StreamWriter(wbrq.GetRequestStream) sw.Write(DataString) sw.Close() 'get response wbrs = wbrq.GetResponse sr = New StreamReader(wbrs.GetResponseStream) strResult = sr.ReadToEnd.Trim sr.Close() 

只需在vb .net 3.5版本中添加您的代码:

 ServicePointManager.SecurityProtocol = DirectCast(3072, SecurityProtocolType) 

那么你的代码变成:

 ServicePointManager.SecurityProtocol = DirectCast(3072, SecurityProtocolType) Dim wbrq As HttpWebRequest Dim wbrs As HttpWebResponse Dim sw As StreamWriter Dim sr As StreamReader Dim strResult As String 'Create a new HttpWebRequest object. wbrq = WebRequest.Create(strURL) wbrq.Method = "POST" wbrq.ContentLength = DataString.Length wbrq.ContentType = "application/x-www-form-urlencoded" ............. 

希望这个帮助

如果您使用的是.NET 3.5.1,则可以选择应用汇总修补程序并应用注册表编辑以告知.NET使用系统默认值。 更多细节在这里

如果您未能使用.NET 4.5进行TLS 1.2和1.1支持,并且至少需要使用Windows Server 2008 R2。