65 votes

Est-il possible d'envoyer HttpWebRequest en utilisant TLS1.2 sur le framework .NET 4.0 ?

Mon application se connecte au serveur d'Experian et Experian cessera bientôt de supporter TLS 1.0 et TLS 1.1. Toute connectivité utilisant HTTPS doit utiliser TLS version 1.2.

Je veux faire des recherches sur cette question et voir si l'on envoie HttpWebRequest l'utilisation de TLS 1.2 sur le cadre .NET 4.0 fonctionne

Si ce n'est pas le cas, je vais probablement devoir créer une webservice sur .NET 4.5 et appeler ses méthodes, si c'est le cas, je ne dois rien faire.

Quelqu'un a-t-il déjà été confronté à ce problème ?

0voto

önder çalbay Points 35

FrameWork 4.0 ne supporte pas TLS 1.1 ou 1.2 Mais vous pouvez résoudre ce problème en téléchargeant Rebex.Http du gestionnaire de Nuget.

Rebex.Licensing.Key = "..."; //Lisans Number
var creator = new HttpRequestCreator();
creator.Register();

WebRequest request = WebRequest.Create("https://www.test.com");
request.Method = "POST";                
request.Headers.Add("utsToken", txtToken.Text);
request.ContentType = "application/json";
request.Method = "POST";

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    string json = "{\"VRG\":\"test\"}";

    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();
}

var httpResponse = (WebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    var result = streamReader.ReadToEnd();
    txtSonuc.Text += result;
}

0voto

Sedat Kumcu Points 121

J'ai été résolu avec cette méthode.

string url = "https://api.foursquare.com/v2/blablabla...";
var request = (HttpWebRequest)WebRequest.Create(url);

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

0voto

Tim Copenhaver Points 2933

Malheureusement non, vous ne pouvez pas faire ça. Tls12 n'a été ajouté qu'à partir de .netfx 4.5 (cf. la documentation ). Notez que cela nécessite également Windows Server 2008 R2+ ou Windows 7+ pour fonctionner correctement (remarquez la section S'applique à sur Présentation de TLS ).

1 votes

La réponse de @iignatov devrait fonctionner : ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X