2013-10-08 81 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