firefox addon sdk - 为https请求设置SSL证书

时间:2013-09-01 14:32:18

标签: javascript ssl-certificate firefox-addon-sdk

我正在开发一个firefox插件,我需要进行https调用。我获得了 SSL证书信息(序列号,SHA1指纹和MD5指纹)。当我尝试使用main.js中的Request模块时,我的状态总是 0 。我尝试使用其他http请求的请求模块,这些请求不受保护,并且工作正常。

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

虽然我尝试使用 Dev-HTTP-Client 谷歌浏览器插件模拟相同的请求,但正常,我可以从https服务器获得正确的响应。< / p>

我不确定,但我认为我需要使用chrome模块Cc [“@ mozilla.org/security / ...来完成这项工作。

如果您可以指导我从插件内部设置SSL证书信息的正确步骤

1 个答案:

答案 0 :(得分:0)

不幸的是,没有直接的方法来手动验证证书并继续请求。相反,您需要自己添加错误覆盖并重试。

  1. 尝试通过XMLHttpRequest定期nsIXMLHttpRequest。 SO和Google上有足够的代码和示例描述了如何执行此操作。 requests模块不会这样做,因为它隐藏了一些必要的细节。
  2. 实施nsIBadCertListener2并将其填入req.channel.notificationCallbacks(可能希望保留原始回调)。
  3. 如果您的.notifyCertProblem()被调用,则表示证书未经验证。现在,您可以使用种子指纹(和序列号)验证证书。
  4. 如果您的种子信息匹配,add a cert override(当然不适用于STS主机)
  5. 添加覆盖后重新旋转请求,因为第一个请求在命中notifyCertProblem()后就已经取消。
  6. 大多数内容都在Boot2Gecko的ErrorPage.jsm中得到了很好的展示(仍适用于所有其他mozilla供电的产品)。这是一个交叉参考,所以点击;) 当然,您需要使用chrome模块。

    我应该提一下,我是故意不提供完整的复制意大利面代码解决方案,只提供所有必需的指针,因为我认为一个人应该有足够的能力去工作我提供的,或者不首先触及安全子系统。