2011-04-07 30 views
3

我在我的C#項目使用此webkitdotnet。這一切都很順利,直到我必須使用https訪問站點。Webkitdotnet無法加載HTTPS站點

我已經搜查他們的論壇,發現few posts這個,但沒有它解決我的問題,所以請闡明這個一些輕。謝謝!

編輯:同樣如他們的線程中提到的(也沒有答案),當我嘗試訪問我的服務器時,出現「對等證書無法通過已知CA證書進行身份驗證」的錯誤,但https://www.google.com正常工作。

他們還提到了「蘋果」建立後就正常使用SSL(至少所以他們說),但我不能在任何地方找到它...

回答

6

這是一個黑客位的,但你可以webkitdotnet則會忽略對SSL錯誤。 WebKitDotNet使用WebKit,它反過來使用curl,它負責你那裏的精彩ssl錯誤。 curl公開了一個選項來忽略ssl錯誤,但webkit和webkitdotnet似乎都沒有在api中公開這個功能。但是,如果您簽出webkit源代碼,那麼如果環境變量WEBKIT_IGNORE_SSL_ERRORS的值設置爲true,則webkit將curl選項(CURLOPT_SSL_VERIFYPEER)設置爲false。

這一切都歸結爲是如果初始化無論是WebKit的或webkitdotnet組件之前,在代碼中設置環境變量,WebKit的將忽略壞證書,並允許您導航到該網站(有點像點擊繼續無論如何,在IE9的壞證書警告頁面)。

C++:

setvar("WEBKIT_IGNORE_SSL_ERRORS", "1"); 

C#:

Environment.SetEnvironmentVariable("WEBKIT_IGNORE_SSL_ERRORS", "1"); 

如果有人有興趣,引用的WebKit的源代碼文件的webkit \來源\的WebCore \平臺\網絡\捲曲\ ResourceHandleManager.cpp目前在第65和681行。

+0

@therealmitchconnors:非常感謝您的回覆(我昨晚在論壇上看到了您的回覆),但找不到您正在談論的引用代碼?你能給我鏈接嗎?我的意思是,我下載了0.5版本的src,但它不在那裏。也許這不是一個壞主意,讓你的修補程序在網絡上可用? (由於主開發者放棄了這個項目) – Nikola 2011-06-03 06:28:10

+0

@Nikola:如果你已經下載了WebKitDotNet的0.5版,並且在Visual Studio中打開了WebKit.NET.sln,你應該看到三個項目 - WebKitBrowser,WebKitBrowserTest和WebKitCore。在WebKitBrowserTest中,打開MainForm.cs,並在第48和49行之間插入以下文本。 'Environment.SetEnvironmentVariable(「WEBKIT_IGNORE_SSL_ERRORS」,「1」);' 這應該使此行成爲'public MainForm )',在調用'InitializeComponent()'之前。運行該項目,即使證書不正確,您也應該能夠導航到該站點。 – therealmitchconnors 2011-06-07 16:44:02

+0

@therealmitchconnors:謝謝你的回覆。我照你說的做了,但是當我運行該項目並導航到https://www.google.com時,出現此錯誤:「SSL對等證書或SSH遠程密鑰不正常」 – Nikola 2011-06-08 07:40:47

0

長谷歌搜索我終於結束了購買SSL後證書爲我的域名,現在一切都很好。另外,值得注意的是,Webkit是最容易使用的並允許DOM訪問和操作的工具。

0

我嘗試下面的代碼,併爲我工作。

webkitBrowser.Preferences.IgnoreSSLErrors = true;