0

私は Firefox アドオンを開発しており、https 呼び出しを行う必要があります。SSL 証明書情報(シリアル番号、SHA1 フィンガープリント、および MD5 フィンガープリント) が提供されます。main.js から Request モジュールを使用しようとすると、常にステータスが0になります。保護されていない他の http 要求で Request モジュールを試してみましたが、正常に動作します。

したがって、0ステータスはSSL証明書に関係していると思います。

Dev-HTTP-Client google chrome プラグインを使用して同じリクエストをシミュレートしようとしましたが、正常に動作し、https サーバーから適切な応答を取得できます。

よくわかりませんが、これを機能させるには chrome モジュール Cc["@mozilla.org/security/... を使用する必要があると思います。

アドオン内からSSL証明書情報をセットアップするための適切な手順を教えていただければ、それは素晴らしいことです

4

1 に答える 1

0

残念ながら、証明書を手動で検証してリクエストを続行する直接的な方法はありません。代わりに、エラーのオーバーライドを自分で追加して再試行する必要があります。

  1. XMLHttpRequest通常のビアを作成しようとし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 に答える