Laden...

Was muss ich an meinem WebRequest ändern, wenn von HTTP auf HTTPS umgestellt wird?

Erstellt von holger_bremen vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.236 Views
H
holger_bremen Themenstarter:in
3 Beiträge seit 2009
vor 4 Jahren
Was muss ich an meinem WebRequest ändern, wenn von HTTP auf HTTPS umgestellt wird?

Aktuell kummuniziere ich (Client) bei einem Kunden per HTTP mit einem SAP Rest Service (Server). Die Daten werden per JSON übermittelt. Dazu nutze ich die WebRequest-Klasse.
Demnächst will der Kunde auf HTTPS umstellen und will mir für die Umstellung ein Zertifikat zur Verfügung stellen.
Was bedeutet das für die WebRequest-Klasse? Was muss auf meiner Seite geändert werden.
Nach meinem Verständnis müsste ich eigentlich gar nichts machen, außer die URL bei mir ändern. Was kann ich mit diesem Zertifikat überhaupt machen.


        public Task<string> POST(EnumSapMessageDef messageType, string url, string jsonContent, bool isRetry = false)
        {
            var request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";

            var encoding = new UTF8Encoding();
            var byteArray = encoding.GetBytes(jsonContent);

            request.ContentLength = byteArray.Length;
            request.ContentType = @"application/json";

            try
            {
                using (var dataStream = request.GetRequestStream())
                {
                    dataStream.Write(byteArray, 0, byteArray.Length);
                }
            }
            catch (Exception )
            {
                // Fehlerbehandlung ....
            }
            return null;
        }

1.029 Beiträge seit 2010
vor 4 Jahren

Hi,

naja - mit dem Zertifikat kannst du ggf. einbauen, dass genau dieses eine Zertifikat zugelassen ist - viel mehr aber auch nicht. Da liegst du schon richtig.

16.806 Beiträge seit 2008
vor 4 Jahren

Taipi88 hat zur Frage alles gesagt; nennt sich Certificate Pinning.

PS: Deine Methode an für sich ist im Sinne von async/await aber nicht korrekt implementiert.
Korrekt wäre GetRequestStreamAsync

So ist die Methode ein klassischer Pitfall und kann zum Deadlock und damit Absturz der Anwendung führen.
Wen möglich sollte man zudem mit dem HttpClient arbeiten. HttpWebRequest sollte nur verwendet werden, wenn absolut notwendig.


using (var call = await _httpClient.GetAsync(url))
  {
    string content = await call.Content.ReadAsStringAsync();
    return content;
  }

H
holger_bremen Themenstarter:in
3 Beiträge seit 2009
vor 4 Jahren

Ok, das bedeutet auf Clientseite also keine Änderungen. Alles läuft wie vorher. Nur die URL muss geändert werden.

@Abt
Du hast Recht, da ist noch Optimierungsbedarf. Der Code stellt aber auch nur einen Teil der Funktion dar, die ist noch etwas länger.
Die Kommunikation läuft dazu auch etwas länger ohne ein Problem, da bin ich mit Verbesserungen immer ganz vorsichtig. Never change...

16.806 Beiträge seit 2008
vor 4 Jahren

Dein Argument ist einfach nur russisches Roulette.
Nur eine Frage, bis es knallt.

Aber keiner kann Dich zwingen korrekten Code zu schreiben.