2017-02-10 1 views
19

Ich versuche, eine C# -Proxy-DLL zu erstellen, die VS2015-Community auf meiner Offline-Workstation Zugriff auf Internet über einen Firmen-HTTP-Proxy mit Authentifizierung ermöglicht.C# Visual Studio 2015: IWebProxy Zertifikatsüberprüfung

Nach Anweisung von this MSDN blog post Ich bin in der Lage zu Visual Studio HTTP-Seiten auf diese Weise zu verbinden:

namespace VSProxy 
{ 
    public class AuthProxyModule : IWebProxy 
    { 
     ICredentials crendential = new NetworkCredential("user", "password"); 

     public ICredentials Credentials 
     { 
      get 
      { 
       return crendential; 
      } 
      set 
      { 
       crendential = value; 
      } 
     } 

     public Uri GetProxy(Uri destination) 
     { 
      ServicePointManager.ServerCertificateValidationCallback = (Header, Cer, Claim, SslPolicyErrors) => true; 
      return new Uri("http://128.16.0.123:1234", UriKind.Absolute); 
     } 

     public bool IsBypassed(Uri host) 
     { 
      return host.IsLoopback; 
     } 
    } 
} 

Aber ich bin nicht in der Lage auf die Konto Authentifizierungsseite für Visual Studio Gemeinschaft Zugang zu verbinden.

Also, ich versuche, Microsoft-Zertifikat mit DLL zu validieren.

Gibt es eine Möglichkeit, HTTPS und Zertifikat Problem zu erreichen?

Wie kann ich das Zertifikat in der webProxy DLL validieren?

Antwort

0

Sie haben möglicherweise ein SSL-Proxy-Zertifikat Firma gegeben. Sie importieren nur die eine in Root-Zertifikat in IE (dh http://www.instructables.com/id/Installing-an-SSL-Certificate-in-Windows-7/, https://bto.bluecoat.com/webguides/sslv/sslva_first_steps/Content/Topics/Configure/ssl_ie_cert.htm)

Oder nur Zertifikatsvalidierung

  1. how to set ServicePointManager.ServerCertificateValidationCallback in web.config

  2. How to stop certificate errors temporarily with WCF services (OzrenTkalcecKrznaric Antwort)

  3. über Net Config ignoriert

Im Fall von Visual Studio 2015 ist die .Net-Konfigurationsdatei i s befindet sich unter "% PROGRAMFILES (x86)% \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe.config".

Ich hoffe, es ist hilfreich.

0

ServicePointManager.ServerCertificateValidationCallback Ist der Hauptzugriff für die Überprüfung des Netzwerkzertifikats auf .Net, wenn Sie ein Zertifikat validieren möchten, müssen Sie es hier tun. Ich schlage vor, den Callback an einer anderen Stelle als innerhalb der GetProxy-Methode zu binden. Setzen Sie es dorthin, wo Sie den Proxy initialisieren und dort Ihre Zertifikatsvalidierung durchführen.

0

Wenn Sie die Zertifikatsprüfung insgesamt umgehen möchten, könnten Sie setzen Ihre ServicePointManager.ServerCertificateValidationCallback immer einen Delegaten verwenden, die true zurückgibt:

var validationCallback = new RemoteCertificateValidationCallback(delegate { return true; }); 

....

ServicePointManager.ServerCertificateValidationCallback += validationCallback; 

Ich würde wickeln dass in einem Versuch/fangen/schließlich und in der schließlich, entfernen Sie die Delegierten (wie es sonst Prozess-weite iirc gilt):

finally 
{ 
    ServicePointManager.ServerCertificateValidationCallback -= validationCallback; 
} 
+0

** warnung: ++ Da die Einstellung global ist, wird sie auf Multithread-Aufrufe angewendet, auch wenn Sie die Validierung deaktivieren. Es ist besser, bestimmte Host-Prüfungen zu implementieren oder einen bestimmten Fingerabdruck zu akzeptieren. Besser noch, installieren Sie das Zertifikat in den Windows-Zertifikatsspeicher, so dass es automatisch aufgenommen wird. – jessehouwing