Angeben von SSL/TLS für System.Net.HttpWebRequest über die App.config

Muss ich POST JSON-Daten, um eine TLS-1.2-Endpunkt. Ich hätte gerne die SecurityProtocol angegeben in der App.config anstatt hardcoded in den source und nicht wollen, um die Registrierung der Maschine zu deaktivieren TLS 1.1.

Wenn Sie nicht angeben der SecurityProtocol das zugrunde liegende OS-Protokolle werden verwendet, aber Sie scheinen standardmäßig die zuletzt sichere anstelle der sichersten. Da habe ich mehrere Dienste von der Maschine, die ich nicht festlegen, dass die OS nur TLS1.2, aber ich will auch noch dieses spezielle client TLS 1.2 verwenden, und wenn TLS 1.3 kommt heraus in der Lage sein, es zu ändern durch anwendungsspezifische Konfiguration.

Diese Frage erklärt, wie es zu tun via code: Wie geben Sie das SSL-Protokoll zu verwenden, für die WebClient-Klasse

Diese Frage erklärt, wie man es über die Registry-Einstellungen für die gesamte Maschine: Gibt es .NET-Implementierung von TLS 1.2?

//this is what I want to avoid
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocol.Tls12;

System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url);

using (System.IO.StreamWriter sw = new System.IO.StreamWriter(request.GetRequestStream()))
{
    sw.write(json);
}

System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
using System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream()))
{
    content = sr.ReadToEnd();
}

Habe ich nichts in meiner App.config für diesen Kunden derzeit, aber das ist was, das ich ändern möchte.

Habe ich festgestellt, dass es eine sslStreamSecurity-element im system.serviceModel, aber ich glaube, das ist für ServiceReferences, nicht normal HttpWebRequest. Ich glaube, dass ist im Rahmen system.net aber ich kann nicht finden, ein äquivalent.

<system.serviceModel>
  <bindings>
    <customBinding>
      <binding name="myBinding">
        <sslStreamSecurity sslProtocls="Tls12">
      </binding>
    </customBinding>
  </bindings>
  <client>
    <endpoint address="https://myserver.com" binding="customBinding" bindingConfiguration="myBinding" name="myEndpoint" />
  </client>
</system.ServiceModel>

Ich bin ziemlich offen über etwas anderes als HttpWebRequest/HttpWebResponse möchte aber bleiben Sie Weg von der Installation von Drittanbieter-Pakete. Ich begann einen Pfad mit System.Net.Http.HttpClient scheint neuer als HttpWebRequest aber rannte schnell in die gleichen Probleme.

InformationsquelleAutor Carson Evans | 2017-08-03

Schreibe einen Kommentar