2017-02-10 56 views
19

Próbuję utworzyć C# proxy DLL, która pozwala społeczności VS2015, na mojej stacji roboczej w trybie offline, dostęp do Internetu za pośrednictwem korporacyjnego proxy HTTP z uwierzytelniania.C# Visual Studio 2015: Sprawdzanie poprawności certyfikatu IWebProxy

Po instrukcją this MSDN blog post jestem w stanie połączyć VisualStudio do stron HTTP w ten sposób:

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; 
     } 
    } 
} 

Ale nie jestem w stanie połączyć się ze stroną uwierzytelnienia konta dla Visual Studio dostępu wspólnotowym.

Próbuję sprawdzić certyfikat Microsoft za pomocą DLL.

Czy istnieje sposób, w jaki mogę wykonać HTTPS i wydać certyfikat?

Jak mogę sprawdzić certyfikat w bibliotece DLL webProxy?

Odpowiedz

0

Być może firma posiadająca certyfikat SSL proxy została wydana. Wystarczy zaimportować jeden do certyfikatu głównego w IE (tj 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)

Albo po prostu ignorowanie walidacji certyfikatów poprzez Net config

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

  2. How to stop certificate errors temporarily with WCF services (odpowiedź OzrenTkalcecKrznaric za)

W przypadku programu Visual Studio 2015 plik konfiguracyjny .Net i s znajduje się w "% PROGRAMFILES (x86)% \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe.config".

Mam nadzieję, że jest to pomocne.

0

ServicePointManager.ServerCertificateValidationCallback Jest to główny dostęp do sprawdzania poprawności certyfikatu sieciowego w .Net, jeśli chcesz potwierdzić certyfikat, musisz to zrobić tutaj. To, co sugeruję, to powiązanie wywołania zwrotnego gdzieś indziej niż w metodzie GetProxy. Umieść go w miejscu, w którym zainicjujesz serwer proxy i wykonaj tam walidację certyfikatu.

0

Jeśli chcesz ominąć sprawdzanie certyfikatów w ogóle, można tak ustawić, aby zawsze używać ServicePointManager.ServerCertificateValidationCallback delegata która zwraca TRUE:

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

....

ServicePointManager.ServerCertificateValidationCallback += validationCallback; 

będę owijać że w próbie/catch/finally i na końcu, usuń delegata (ponieważ w przeciwnym razie dotyczy to całego procesu iirc):

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

** warnung: ++ ponieważ ustawienie jest globalne, będzie stosowane do połączeń wielowątkowych nawet po wyłączeniu sprawdzania poprawności. Lepiej zaimplementować konkretne testy hosta lub zaakceptować określony odcisk kciuka certyfikatu. Co więcej, zainstaluj certyfikat w magazynie certyfikatów systemu Windows, aby był automatycznie pobierany. – jessehouwing