Контроль WebBrowser - игнорировать ошибки SSL - PullRequest
13 голосов
/ 04 августа 2011

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

http://imgur.com/Uqt7H

Я уже видел много близких постов:

Как отключить окно «Предупреждение системы безопасности» в элементе управления Webbrowser - не работает, потому что WebBrowser, видимо, не 't использовать ServicePointManager

Подавление диалоговых окон управления размещенным веб-браузером - зависит от знания заголовков окон, что не работает для неанглоязычной аудитории

C #Контроль WebBrowser - игнорировать предупреждения безопасности веб-сайта - это было закрыто как дубликат, а ответ только что ссылался на вышеуказанную ссылку.

Большинство постов формы предлагают реализовать IInternetSecurityManager, что я и сделал, нобезрезультатно.
Ответ с постоянным значением GetSecurityId для всех URL-адресов (с указанием URLZONE_LOCAL_MACHINE или URLZONE_TRUSTED) не работает.

Следующее не помогает:

public unsafe int MapUrlToZone(string url, int* pdwZone, int dwFlags)
{
    *pdwZone = 3; // URLZONE_TRUSTED;
    return Win32.S_OK;
}

Наконец, я не могу найти способ для ProcessUrlAction иметь какой-либо эффект:

public unsafe int ProcessUrlAction(string url, int dwAction, byte* pPolicy, int cbPolicy,
            byte* pContext, int cbContext, int dwFlags, int dwReserved)
{
    *((int*)pPolicy) = (int)Win32.UrlPolicy.URLPOLICY_ALLOW;
    return Win32.S_OK;
}

Имееткто-нибудь успешно нашел путь к этой странице предупреждения SSL?

Ответы [ 2 ]

7 голосов
/ 04 августа 2011

интерфейс, который вам нужно реализовать, это IHttpSecurity.См. http://jiangsheng.net/2013/07/17/howto-ignoring-web-browser-certificate-errors-in-webbrowser-host/ для примера на основе Windows Forms.

0 голосов
/ 29 ноября 2013

Для меня это работает, используя следующий код:

' automatically accept HTTPS certificates
ServicePointManager.ServerCertificateValidationCallback = AddressOf AcceptAllCertifications

Надеюсь, это будет полезно;)

...