Как проигнорировать ошибку сертификата с c# 2.0 WebClient - без сертификата

Вместо (IReporting) obj. XXX необходимо записать ((IReporting) obj).XXX

public interface IFoo
{
    event EventHandler Boo;
}

class Foo : IFoo
{
    public event EventHandler Boo;
    public void RaiseBoo()
    {
        if (Boo != null)
            Boo(this, EventArgs.Empty);
    }
}

...

private void TestClass_Boo(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

    ...

   object o = new Foo();
   ((IFoo)o).Boo += TestClass_Boo;
   ((Foo)o).RaiseBoo();

Относительно сменной платформы смотрит на существующие решения с хорошей архитектурой, например MEF

34
задан Community 23 May 2017 в 12:09
поделиться

2 ответа

Сертификат SSL предназначен для установки машиной доверительных отношений. Если вы вводите один IP-адрес и в конечном итоге разговариваете с другим, это звучит так же, как ошибка безопасности перехвата DNS, то, что SSL намеревается помочь вам избежать - и, возможно, то, с чем вы не хотите мириться. от "них".

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

Чтобы игнорировать доверие (мне приходилось делать это временно только в сценариях разработки) следующий фрагмент может сработать для вас, но я настоятельно рекомендую вам рассмотреть влияние игнорирования доверия перед его использованием:

public static void InitiateSSLTrust()
{
    try
    {
        //Change SSL checks so that all checks pass
        ServicePointManager.ServerCertificateValidationCallback =
           new RemoteCertificateValidationCallback(
                delegate
                { return true; }
            );
    }
    catch (Exception ex)
    {
        ActivityLog.InsertSyncActivity(ex);
    }
}
56
ответ дан 27 November 2019 в 16:16
поделиться

Этот код намного шире, чем вы могли ожидать. Это процесс. Это может быть exe, IIS на этом компьютере или даже DLLHost.exe. После его вызова создайте блок finally, который восстанавливает нормальное состояние путем удаления делегата, который всегда возвращает true.

8
ответ дан 27 November 2019 в 16:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: