2011-04-07 368 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;