2017-02-10 45 views
19

Я пытаюсь создать прокси-сервер C#, который позволяет сообществу VS2015 на моей автономной рабочей станции доступ к Интернету через корпоративный прокси-сервер HTTP с аутентификацией.C# Visual Studio 2015: проверка сертификата IWebProxy

После обучения this MSDN blog post я могу подключиться к VisualStudio HTTP страниц таким образом:

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

Но я не могу подключиться к странице аутентификации учетной записи для визуального доступа Студия сообщества.

Итак, я пытаюсь проверить сертификат Microsoft с помощью DLL.

Можно ли каким-либо образом решить проблему с HTTPS и сертификатом?

Как проверить сертификат в библиотеке webProxy?

ответ

0

Возможно, у вас есть сертификат прокси-сервера SSL. Вы просто импортировать один в корневой сертификат в IE (т.е. 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)

Или просто игнорируя проверку сертификата с помощью .Net конфигурации

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

  2. How to stop certificate errors temporarily with WCF services (ответ OzrenTkalcecKrznaric в)

В случае Visual Studio 2015 файл конфигурации .Net i s, расположенные в «% PROGRAMFILES (x86)% \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ devenv.exe.config".

Я надеюсь, что это поможет.

0

ServicePointManager.ServerCertificateValidationCallback Является основным доступом для проверки сертификата сети на .Net, если вы хотите проверить сертификат, вы должны сделать это здесь. Я предлагаю вам привязать обратный вызов где-то еще, кроме метода GetProxy. Поместите его там, где вы инициализируете прокси-сервер и выполняете проверку сертификата.

0

Если вы хотите, чтобы обойти проверку сертификата в целом, вы можете установить ваш ServicePointManager.ServerCertificateValidationCallback всегда использовать делегат, который возвращает истину:

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

....

ServicePointManager.ServerCertificateValidationCallback += validationCallback; 

Я бы обернуть что в попытке/уловке/окончательно и в конечном итоге удалите делегата (как в противном случае применяется обходной код iirc):

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

** warnung: ++, поскольку параметр является глобальным, он будет применяться к многопоточным вызовам, даже если вы отключите проверку. Лучше реализовать определенные проверки хоста или принять конкретный отпечаток сертификата. Еще лучше установите сертификат в хранилище сертификатов Windows, чтобы он автоматически подбирался. – jessehouwing