Was ist der beste Weg, nicht-Validierung von SSL-Zertifikaten in C # Handhabung

StackOverflow https://stackoverflow.com/questions/129544

  •  02-07-2019
  •  | 
  •  

Frage

Ich verwende den folgenden Code, um sicherzustellen, dass alle Zertifikate übergeben, auch ungültig sind, aber ich würde gerne wissen, ob es eine bessere Art und Weise ist, wie dieses Ereignis global aufgerufen wird, und ich möchte nur das Zertifikat für eine weitergeben bestimmter HTTP-Aufruf und nicht für andere, die asynchron geschehen.

// This delegate makes sure that non-validating SSL certificates are passed
ServicePointManager.ServerCertificateValidationCallback = delegate(object certsender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
   return true;
};

Der obige Code ist nur ein Beispiel von auf dem Zertifikat jede Nicht-Validierung zu ignorieren. Das Problem, das ich habe, ist, dass es eine global Veranstaltung. Ich kann nicht sehen, welche Sitzung das Ereignis für geschieht. Ich könnte ein paar HTTP-Anfragen habe durchlaufen und ich mag den Benutzer nach einer Aktion fragen für jede Anforderung .

War es hilfreich?

Lösung

Was ist mit dem certsender Argumente? Enthält es etwas sinnvoll, so dass man sagen kann, welche Verbindung der Rückruf für geschieht? Ich überprüfte das .NET-API aber nicht sagen, was das Argument enthalten soll ...

Andere Tipps

Nun, könnte man tatsächlich die Mühe, einige dieser Parameter zu überprüfen. ;) Zum Beispiel, wenn Sie ein selbst signiertes Zertifikat haben, dann nur lassen error = = SslPolicyErrors.RemoteCertificateChainError durch. Sie könnten auch die Emittenten, den Namen überprüfen, etc. auf dem Zertifikat selbst für zusätzliche Sicherheit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top