web-dev-qa-db-fra.com

Comment implémenter les protocoles de sécurité TLS 1.2 dans le framework .Net 3.5

Comme Paypal a mis à jour leur réponse, j'ai besoin de mettre à jour les protocoles de sécurité TLS vers v1.2 dans mon application existante qui est sur le framework .NET 3.5. Quelles modifications nécessaires pour mettre à jour cela dans le code existant, je ne peux pas mettre à jour l'application vers un cadre plus récent.

11
trighati

J'utilise VS 2008 avec .net 3.5.30729.4926. Tout ce que j'avais à faire était:

Ajouter des importations:

Imports System.Security.Authentication
Imports System.Net

Ajoutez ceci à mon code (C #):

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

Version 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()  
16
D_Bester

juste ajouter l'ajout de votre code dans la version vb .net 3.5:

ServicePointManager.SecurityProtocol = DirectCast(3072, SecurityProtocolType)

alors votre code devient:

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"
.............

j'espère que cette aide

3
Yosep Tito

Si vous êtes sur NET 3.5.1, vous avez la possibilité d'appliquer un correctif cumulatif et d'appliquer une modification du Registre pour indiquer à .NET d'utiliser la valeur par défaut du système. Plus de détails ici

À défaut, vous devez utiliser .NET 4.5 pour la prise en charge TLS 1.2 et 1.1 et sur Windows Server 2008 R2 au minimum.

2
Ian Bennett