GeckoFX 22通过自签证书

时间:2013-10-08 03:09:38

标签: geckofx

我正在使用c#实现GeckoFX浏览器。 我需要导航到安全的自我标志证书。但GeckoFX给我这个错误。

证书不受信任,因为颁发者证书不受信任。 该证书仅对FG200B3913601572有效 (错误代码:sec_error_untrusted_issuer)

如何绕过支票?

4 个答案:

答案 0 :(得分:6)

您可以尝试使用此代码,但它需要最新版本的Geckofx(从源代码构建):

browser.NSSError += (s,e) => {
    CertOverrideService.RememberRecentBadCert(e.Uri);
    Uri refUrl = browser.Url;
    browser.Navigate(e.Uri.AbsoluteUri, refUrl != null ? refUrl.AbsoluteUri : null);
    e.Handled = true;
};

答案 1 :(得分:1)

geckoWebBrowser1.NSSError += geckoWebBrowser1_NSSError;

void geckoWebBrowser1_NSSError(object sender, Gecko.Events.GeckoNSSErrorEventArgs e)
            {
                if (e.Message.Contains("Certificate"))
                {
                    Gecko.CertOverrideService.GetService().RememberRecentBadCert(e.Uri, e.SSLStatus);
                    geckoWebBrowser1.Navigate(e.Uri.AbsoluteUri);
                    e.Handled = true;
                }

            }

在gecko 33中试用

答案 2 :(得分:1)

在GeckoFx 60中, RememberRecentBadCert 现在已被贬低,因此您必须使用 RememberValidityOverride

browser.NSSError += (s, e) =>
{
    if (e.Message.Contains("Certificate"))//Peer's Certificate issuer is not recognized.
    {
        CertOverrideService.GetService().RememberValidityOverride(e.Uri, e.Certificate, CertOverride.Mismatch | CertOverride.Time | CertOverride.Untrusted, false);
        if (!e.Uri.AbsoluteUri.Contains(".js") && !e.Uri.AbsoluteUri.Contains(".css")) browser.Navigate(e.Uri.AbsoluteUri);
        e.Handled = true;//otherwise shows error
    }
};

参考:https://bitbucket.org/geckofx/geckofx-60.0/src/default/Geckofx-Core/Services/CertOverrideService.cs

通过处理证书错误,我的浏览器几乎开始正常运行,但是仍然这些证书错误导致意外错误。那就是为什么我在Windows根证书中添加了我想使用的证书。但它仍然没有工作。最后,我发现默认情况下,GeckoFX不会导入存储的Windows证书,并且必须通过以下首选项启用它:

GeckoPreferences.User["security.enterprise_roots.enabled"] = true;
GeckoPreferences.User["security.enterprise_roots.auto-enabled"] = true;

这2个首选项完成了工作,最后我没有收到任何“不受信任的证书”错误。赫里卡!

答案 3 :(得分:0)

上面的代码在版本29.0.2上不起作用。有一个错误导致CertOverrideService.RememberRecentBadCert调用错误。

升级到29.0.11后,它运行得很好。

这是VB.NET代码。

Sub IgnoreSSLError(ByVal sender As Object, ByVal e As Gecko.Events.GeckoNSSErrorEventArgs) Handles WebBrowserRehab.NSSError
        CertOverrideService.RememberRecentBadCert(e.Uri)
        WebBrowserRehab.Navigate(e.Uri.AbsoluteUri)
        e.Handled = True
End Sub