前回の
なお、
手順の概要
この方式では、
- (1) インストールマニフェストへ公開鍵を追加する
- (2) アップデートマニフェストへインストーラのハッシュ値を追加する
- (3) アップデートマニフェストへ電子署名を施す
すると、
- アドオンマネージャで
「更新を確認」 する際、 インストールマニフェスト中に記載された公開鍵と、 安全ではない通信経路 (httpプロトコルのURL) から取得したアップデートマニフェスト中の電子署名とを照合し、 アップデートマニフェストの正当性 (通信経路の途中で改ざんされていないこと) を検証する。 - アドオンマネージャで
「更新をインストール」 する際、 アップデートマニフェスト中に記載されたインストーラのハッシュ値と、 実際にダウンロードしたインストーラから算出したハッシュ値とを照合し、 そのインストーラの正当性を検証する。
McCoyのインストールと公開鍵・秘密鍵のペア生成
「手順の概要」
McCoyを初めて起動すると、
![図1 McCoyでの公開鍵・秘密鍵のペア生成 図1 McCoyでの公開鍵・秘密鍵のペア生成](/assets/images/dev/feature/01/firefox-addons/0008/thumb/TH800_01.png)
インストールマニフェストへの公開鍵追加
続いて、
![図2 McCoyで公開鍵の値をクリップボードへコピー 図2 McCoyで公開鍵の値をクリップボードへコピー](/assets/images/dev/feature/01/firefox-addons/0008/thumb/TH800_02.png)
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>[email protected]</em:id>
<em:type>2</em:type>
<em:name>Tag Helper</em:name>
<em:version>0.8</em:version>
<em:description>Generates bookmark tags from the selection.</em:description>
<em:creator>Your Name</em:creator>
<em:homepageURL>http://www.xuldev.org/misc/sd.php</em:homepageURL>
<em:updateURL>http://some-server/taghelper/update.rdf</em:updateURL>
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCf+spGKCACaOJLeU8pEAIzdr7ipw393H5cU09OXNcKAoeVNGa4bx9cTW9xh08WOxAI8M2bhsusLk+TJ6IntOyIcF2L5W52EnCHmS/UtP8Cudk215L5lC2NjbeeCAw+qbyQY6shM4LZdBz0/amFln3go+7/2NfyxEMWBNkFlTGErQIDAQAB</em:updateKey>
<em:localized>
<Description>
<em:locale>ja</em:locale>
<em:name>タグヘルパー</em:name>
<em:description>選択範囲からブックマークのタグを生成します。</em:description>
<em:creator>あなたの名前</em:creator>
</Description>
</em:localized>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>3.0</em:minVersion>
<em:maxVersion>3.0.*</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
インストールマニフェストの修正が完了したら、
アップデートマニフェストへのインストーラのハッシュ値追加
次に、
php -r "echo sha1_file('c:\\work\\taghelper\\taghelper.xpi');"
SHA-1ハッシュ値を算出したら、
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:extension:[email protected]">
<em:updates>
<Seq>
<li>
<Description>
<em:version>0.8.1</em:version>
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>3.0</em:minVersion>
<em:maxVersion>3.0.*</em:maxVersion>
<em:updateLink>http://www.xuldev.org/misc/sd/taghelper-0.8.xpi</em:updateLink>
<em:updateHash>sha1:8d6769c9bca0bda73727770ba1bbaf66409263b8</em:updateHash>
</Description>
</em:targetApplication>
</Description>
</li>
</Seq>
</em:updates>
</Description>
</RDF>
注意点すべき点として、
アップデートマニフェストへの電子署名
アップデートマニフェストへの電子署名を施す前に、
McCoyで生成した公開鍵・
![図3 McCoyでの電子署名 図3 McCoyでの電子署名](/assets/images/dev/feature/01/firefox-addons/0008/thumb/TH800_03.png)
<?xml version="1.0"?>
<RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#"
xmlns:NC="http://home.netscape.com/NC-rdf#"
xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<RDF:Description RDF:about="rdf:#$3b.rF3"
em:version="0.8.1">
<em:targetApplication RDF:resource="rdf:#$6b.rF3"/>
</RDF:Description>
<RDF:Description RDF:about="rdf:#$6b.rF3"
em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
em:minVersion="3.0"
em:maxVersion="3.0.*"
em:updateLink="http://www.xuldev.org/misc/sd/taghelper-0.8.xpi"
em:updateHash="sha1:8d6769c9bca0bda73727770ba1bbaf66409263b8" />
<RDF:Seq RDF:about="rdf:#$2b.rF3">
<RDF:li RDF:resource="rdf:#$3b.rF3"/>
</RDF:Seq>
<RDF:Description RDF:about="urn:mozilla:extension:[email protected]"
em:signature="MIGTMA0GCSqGSIb3DQEBDQUAA4GBAI+e5XvP8Q/viijwVWbC30MvwM4Ohstm5hqUqfkhjmZCsWcIUaux1XPi2r+/keAN+XxTYV4oaQvcP9OSeOzEQNuxwTNUDP5iHmDfRjpEfQHNI5X4QYHmNqlcHTm2loQzQjq1fQd1vUSRdq1WP9/NELuBqpnzC6abb1+iK+WK978q">
<em:updates RDF:resource="rdf:#$2b.rF3"/>
</RDF:Description>
</RDF:RDF>
なお、
Webサーバでの公開
アップデートマニフェストとインストーラを、
- Extension Packaging - MDC
- URL:http://
developer. mozilla. org/ ja/ Extension_ Packaging
動作確認
実際にアドオンマネージャにて更新確認と新しいバージョンがインストール可能であることの動作確認を行います。インストーラの動作確認用のプロファイルへタグヘルパーが既にインストールされている場合は、
- リスト3の<em:updateLink>で示したURLをFirefoxのロケーションバー入力すると、
タグヘルパー (バージョン0. 8) のインストールが正常に行われる。 - タグヘルパー
(バージョン0. 8) をインストール後、 アドオンマネージャで 「更新を確認」 すると、 図4のようにタグヘルパーの更新 (バージョン0. 8.1) が検出される。 - アドオンマネージャにて
「更新をインストール」 ボタンをクリックすると、 正常にインストールが実行される。
![図4 タグヘルパーの更新を検出 図4 タグヘルパーの更新を検出](/assets/images/dev/feature/01/firefox-addons/0008/thumb/TH800_04.png)
なお、
まとめ
今回はおもにレンタルサーバなどで拡張機能の配布をする方を対象として、