【问题标题】:How to allow untrusted SSL in the WPF WebBrowser control如何在 WPF WebBrowser 控件中允许不受信任的 SSL
【发布时间】:2017-12-17 18:07:21
【问题描述】:

我正在做一个非常小的应用程序,它必须显示一些网页(如“信息亭”)。我的一些页面只能通过 HTTPS 访问,但没有有效的 SSL 证书。

有没有办法强制 WPF WebBrowser 控件允许任何 SSL 证书?

类似:

<Grid>
    <WebBrowser helpers:WebBrowserUtility.BindableSource="{Binding UrlToDisplay}" AllowInvalidSSL="true"></WebBrowser>
</Grid>

如果没有,你能想出一个替代方案吗?

【问题讨论】:

  • 您是否尝试过重新配置系统设置?我不确定您是否可以逐个控制地控制此设置,您是否尝试在操作系统级别重新配置?
  • WebBrowser 是原生控件的非常薄的包装,因此您将很难尝试在 WebBrowser 控件级别修改此行为。无论如何 - 只需解决问题而不是寻找解决方法。例如将目标证书安装到本地机器以使其受信任。
  • @vasek:不,因为我们的目标是能够发布此内容,而无需在环境方面进行管理。
  • @Evk:我知道,但这不是一个选择。或者至少如果应该做一些事情(比如安装目标证书),这应该由应用程序来完成。

标签: c# wpf ssl


【解决方案1】:

不确定您是否可以使用 WPF WebBrowser 解决它。但是,如果您使用 CefSharp.Wpf,您可以轻松实现 IRequestHandler 并查看不受信任的站点,而不会注意到用户。

bool IRequestHandler.OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
{
    if (!callback.IsDisposed)
    {
        using (callback)
        {
            callback.Continue(true);
            return true;
        }
    }

    return false;
}

取自this example。非常适合我。

【讨论】:

  • 我对 CefSharp.Wpf 完全开放。现在试试。你如何指定使用哪个IRequestHandler
  • 等等,你怎么能只实现这个方法?
  • @J4N 你不能只实现这个方法,但是如果你只是复制粘贴上面的例子,你就可以实现所需的功能。您使用web.RequestHandler = new MyRequestHandler(); 附加处理程序,其中web 在XAML 中是&lt;cefSharp:ChromiumWebBrowser Name="web" /&gt;。我已经对此进行了测试,并且效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-05
  • 2012-10-13
  • 1970-01-01
  • 2012-10-11
  • 2010-11-15
  • 1970-01-01
相关资源
最近更新 更多