2013-09-01 27 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模塊。

我應該指出,這是故意的,我不是給人一種完整複製麪食代碼解決方案,只有所有需要的指針,因爲這是我認爲一個人應該有足夠的能力與我提供什麼樣的工作,或者首先不要接觸安全子系統。