2013-09-01 23 views
0

我正在开发一个firefox插件,我需要进行https调用。给我一个SSL证书信息(序列号,SHA1指纹和MD5指纹)。当我尝试使用我的main.js中的Request模块时,我总是得到的状态。我尝试了与其他http请求的请求模块,这是不安全的,它工作正常。firefox addon sdk - 为https请求设置SSL证书

所以我假设0状态与SSL证书有关。

虽然我尝试使用开发-HTTP客户端谷歌浏览器插件来模拟同样的请求,它工作正常,我可以从HTTPS服务器的正常反应。

我不知道,但我想我需要使用Chrome模块CC [“@ mozilla.org/security/...来完成这项工作。

如果你能指导我用正确的步骤建立从插件内的SSL证书的信息,这将是巨大的

+0

我没有看到任何与此扩展有关的现有文档。我建议在irc.mozilla.org上放置#extdev或发布到dev-extensions邮件列表:https://lists.mozilla.org/listinfo/dev-extensions – canuckistani

+0

由于Chrome可以与服务器交谈,因此问题不能成为SSL证书。 – paa

回答

0

不幸的是手动验证证书,并继续提出请求的直接方式。相反,你需要添加一个覆盖上的错误你自己,然后重试。

  1. 尝试通过经常XMLHttpRequestnsIXMLHttpRequest。在SO和Google上有足够的代码和样本来描述如何去做。 requests模块不会这样做,因为它隐藏了一些必要的细节。
  2. 执行nsIBadCertListener2并将其填入req.channel.notificationCallbacks(可能希望保留原始回调)。
  3. 如果您的.notifyCertProblem()被调用,则表示证书未验证。现在由您来验证带有种子指纹(和串行)的证书。
  4. 如果你的种子的相关信息匹配,add a cert override(即不会为STS主机的工作,当然)
  5. 重新旋添加覆盖后的要求,作为第一个请求早已见怪不怪尽快取消,因为它击中notifyCertProblem( )。

大多数的东西都整齐地演示在Boot2Gecko的ErrorPage.jsm(仍然适用于所有其他mozilla驱动的产品)。这是一个交叉引用,所以点击左右;) 当然,你需要使用chrome模块。

我应该指出,这是故意的,我不是给人一种完整复制面食代码解决方案,只有所有需要的指针,因为这是我认为一个人应该有足够的能力与我提供什么样的工作,或者首先不要接触安全子系统。