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

时间:2017-02-27 11:41:11

标签: c# asp.net .net paypal tls1.2

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

3 个答案:

答案 0 :(得分:16)

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

添加导入:

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()  

答案 1 :(得分:3)

只需在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"
.............

希望这个帮助

答案 2 :(得分:2)

如果您使用的是.NET 3.5.1,则可以选择应用汇总修补程序并应用注册表编辑以告知.NET使用系统默认值。 More details here

如果你没有使用.NET 4.5 for TLS 1.2& 1.1支持和至少在Windows Server 2008 R2上。