我正在使用c#实现GeckoFX浏览器。 我需要导航到安全的自我标志证书。但GeckoFX给我这个错误。
证书不受信任,因为颁发者证书不受信任。 该证书仅对FG200B3913601572有效 (错误代码:sec_error_untrusted_issuer)
如何绕过支票?
答案 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