Игнорирование неверного сертификата SSL - PullRequest
11 голосов
/ 14 ноября 2011

Я пытаюсь распечатать сообщения журнала из нашей под версии. Но я борюсь с обходом недействительного сертификата SSL. Это ошибка:

ВАРИАНТЫ 'https://xxxxx/svn/SiteFabrics/trunk/AppLaunch/Bloc/Frontend': Сервер Не удалось проверить сертификат: сертификат выдан для другого имя хоста, эмитент не является доверенным (https://xxxx)

Моя попытка игнорировать ошибку сертификата заключалась в добавлении этой строки:

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

Однако это не имело никакого значения, так как ошибка .net осталась прежней. Ниже приведен код, кто-нибудь может увидеть, что я делаю не так?

        using (SvnClient client = new SvnClient())
        {
            Collection<SvnLogEventArgs> list;
            client.Authentication.DefaultCredentials = new NetworkCredential("user", "pass");

            ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

            SvnLogArgs la = new SvnLogArgs(); //{ Start=128; End=132; };
            client.LoadConfiguration(Path.Combine(Path.GetTempPath(), "Svn"), true);
            client.GetLog(new Uri("https://[svnurl]"), la, out list);
            ViewBag.SVNLog = list;
        }

Ответы [ 6 ]

3 голосов
/ 16 августа 2015

НАЙТИ РЕШЕНИЕ ДЛЯ ЭТОЙ ПРОБЛЕМЫ:

Сначала добавьте это:

        static void SVN_SSL_Override(object sender, SharpSvn.Security.SvnSslServerTrustEventArgs e)
    {
        e.AcceptedFailures = e.Failures;
        e.Save = true;
    }

, а затем замените мою оригинальную магическую линию:

            ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

на это:

client.Authentication.SslServerTrustHandlers += new EventHandler<SharpSvn.Security.SvnSslServerTrustEventArgs>(SVN_SSL_Override);
0 голосов
/ 01 апреля 2015

Почти так же, как приведенные выше ответы, просто передавая обратный вызов в качестве делегата. Вы можете попробовать, может работать на вас -

ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
0 голосов
/ 13 марта 2013

Я использую этот ... просто попробуйте:

//As given in the url to handle invalid SSL : http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.servercertificatevalidationcallback.aspx

                ServicePointManager.ServerCertificateValidationCallback += new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertificatePolicy.CheckValidationResult);
0 голосов
/ 11 января 2013
private void GetClaimParams(string targetUrl, out string loginUrl, out Uri navigationEndUrl)
        {
HttpWebRequest webRequest = null;
            WebResponse response = null;
            webRequest = (HttpWebRequest)WebRequest.Create(targetUrl);
            webRequest.Method = Constants.WR_METHOD_OPTIONS;
            #if DEBUG
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(IgnoreCertificateErrorHandler);
            #endif
            try
            {
                response = (WebResponse)webRequest.GetResponse();
                ExtraHeadersFromResponse(response, out loginUrl, out navigationEndUrl);
            }
            catch (WebException webEx)
            {
                ExtraHeadersFromResponse(webEx.Response, out loginUrl, out navigationEndUrl);
            }
}



#if DEBUG
        private bool IgnoreCertificateErrorHandler
           (object sender,
           System.Security.Cryptography.X509Certificates.X509Certificate certificate,
           System.Security.Cryptography.X509Certificates.X509Chain chain,
           System.Net.Security.SslPolicyErrors sslPolicyErrors)
        {
            return true;
        }
#endif // DEBUG
0 голосов
/ 07 ноября 2012

Также можно использовать лямбда-выражение (здесь, в VB):

AddHandler client.Authentication.SslServerTrustHandlers, Sub(ssender As Object, ev As SharpSvn.Security.SvnSslServerTrustEventArgs)
  ev.AcceptedFailures = ev.Failures
  ev.Save = True
End Sub
0 голосов
/ 24 августа 2012

Вы можете подключиться к хранилищу с помощью пользовательского интерфейса SVN, например tortoisesvn , и принять неверный сертификат SSL, и тогда он будет работать нормально.Не исправление кода, но может работать в вашем случае.Это было в моем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...