0

I am developing a firefox addon, and I need to make https calls. I am given an SSL certificate information (Serial Number, SHA1 Fingerprint, andMD5 Fingerprint). When I try to use the Request module from my main.js I always get a status of 0. I tried the Request module with other http requests which are not secured and it works fine.

So I assume that the 0 status has to do with the SSL certificate.

Although I try to simulate the same requests using Dev-HTTP-Client google chrome plugin and it works fine and I can get proper responses from the https server.

I am not sure but I think I need to use the chrome module Cc["@mozilla.org/security/... to make this work.

If you can guide me with the proper steps to setup the SSL certificate information from inside the addon that would be great

4

1 回答 1

0

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

  1. 尝试做一个常规的XMLHttpRequestvia nsIXMLHttpRequest。SO和Google上有足够的代码和示例来描述如何做到这一点。该requests模块不会这样做,因为它隐藏了一些必要的细节。
  2. 实现nsIBadCertListener2并将其填充req.channel.notificationCallbacks(可能希望保留原始回调)。
  3. 如果您.notifyCertProblem()被调用,则表示证书未验证。现在由您使用种子指纹(和序列号)验证证书。
  4. 如果您的种子信息匹配,请添加证书覆盖(当然,这不适用于 STS 主机)
  5. 添加覆盖后重新旋转请求,因为第一个请求在到达 notifyCertProblem() 时已经被取消。

Boot2Gecko 的ErrorPage.jsm中巧妙地展示了大部分内容(仍然适用于所有其他 mozilla 驱动的产品)。这是一个交叉引用,因此请点击;)当然,您需要使用该chrome模块。

我应该提一下,我故意不提供完整的复制粘贴代码解决方案,只提供所有必需的指针,因为我认为一个人应该有足够的能力使用我提供的东西,或者不要碰首先是安全子系统。

于 2013-09-07T14:16:16.360 回答