Sep 21, 2007

XML署名とハッシュを使って安全な方法でアドオンを更新できるようにする

Firefox 3からは、安全な方法での自動更新に対応していないアドオンはインストールできなくなるようだ、ということを先日書いた。そっちのエントリに詳しいことを書いたんだけど、要約すると、「安全な方法での自動更新を提供する」方法には以下の3つのパターンがある。

  1. Mozilla Add-onsにアドオンを登録し、そちらの自動更新の仕組みを利用する。
  2. HTTPSで通信できるサーバを自分で用意して、そこで自動更新の情報を含んだRDFデータソースとXPIパッケージを公開する。
  3. 自動更新の情報を含んだRDFデータソースに、XPIパッケージのハッシュ値を記述した上で、XML署名を施す

くでんさんの報じる所によると、このうち3番目の方法をものすごく簡単に実行できるようになる開発者向けのツール「McCoy(マッコイ)」が公開されたそうで、早速自分も使ってみたところ、本当に簡単だった(手順としては。作業はなんだかんだで手間取ったけど……)。なので、せっかく須藤さんにCOZMIXNGのアカウントを作ってもらったけど、今後はこの方法を使っていこうと思う。

自分が躓いたポイントをメモしておこう……

  • 今アドオンを公開してる人は、1:まずinstall.rdfを編集(em:updateKeyとem:updateURLを変更)して、XPIパッケージを作り直す。2:そのXPIパッケージのハッシュを得る。3:更新通知のデータソースにXPIパッケージのハッシュを記入する。4:更新通知のデータソースにMcCoyでXML署名を施す。……という順で作業することになる。
  • McCoyで生成した公開鍵は、更新情報通知用のRDFデータソースではなくアドオンのinstall.rdfの方に書く。僕は説明をちゃんと読んでなくて最初更新通知のデータソースの方に書いてしまったので、XPIパッケージから何から全部作り直す羽目になってしまった……
  • em:updateHashの値は、SHA-1ハッシュなのであれば sha1:0123456789...という風に書く。頭に付けるのは、SHA-1:でもsha-1:でもsha:でもなく、sha1:。この事を知らなかったので無駄に何度も作業をやり直す羽目になってしまった。
  • McCoyでXML署名を施したRDFデータソースは内容がグチャグチャにされる(RDFデータソースとしては何ら情報は失われていないけれども、タグや属性の書き方、インデントなどは、MozillaがRDFデータソースを自動生成するときのパターンに統一されてしまう)。テキストエディタで手作業編集してるような人とか、スクリプトなどを使って文字列としてRDFデータソースを編集してるような人は、XML署名された後のデータソースを編集できなくなってしまうかもしれない。なので、元のRDFデータソースは保存しておいて、公開用のRDFデータソースとして一つコピーを作成し、そっちにXML署名を施すようにすること。

McCoyはXULRunnerベースなので、僕でも改造できそうな感じだ。ステップ数が増えて、手作業だとミスが今まで以上に多発しそうなので、いずれはこのあたりの一連の操作を半自動化できるようにしてみたい。

追記。せっかくだからMDCのMcCoy関係の文書をモリモリと翻訳してみた。install.rdfの説明の未訳部分とかも。

エントリを編集します。

wikieditish message: Ready to edit this entry.











拡張機能