2013-10-08 51 views
0

我正在实施一个使用C#的GeckoFX浏览器。 我需要导航到安全的自签名证书。但GeckoFX抛出我这个错误。GeckoFX 22通过自签名证书

证书不可信,因为颁发者证书不可信。 证书只适用于FG200B3913601572 (错误代码:sec_error_untrusted_issuer)

我如何绕过检查?

回答

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; 
}; 
+0

嗨音乐录影带大奖,它的工作原理!多谢,伙计! –

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 
+0

我知道它已经有一段时间了,只是想更新,如果有人想在GeckoFx 45中这样做,虽然RememberRecentBadCert现在已经过时了,应该使用RememberValidityOverride 'Function Browser_Error(ByVal sender As Object,e As Gecko.Events。 GeckoNSSErrorEventArgs) 如果e.Message.Contains( “证书”),然后 Gecko.CertOverrideService.GetService()。RememberRecentBadCert(e.Uri,e.SSLStatus) browser.Navigate(e.Uri.AbsoluteUri) e.Handled = True End If End Function' –

+0

应该可能只是将它作为一个单独的答案。我的b。 –

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; 
       } 

      } 

尝试在壁虎33