更新サーバの設定

by 2 contributors:

このドキュメントの目標は、企業内で独自の更新サーバを構築するための基本的な手順を説明することです。本文では Firefox について説明していますが、Thunderbird にも同様の仕組みが備わっています。

はじめに

Firefox は RESTful な Web サービスを利用して更新サービスを提供しています。Firefox は、XML 形式の更新情報ファイルが置かれている URL を定期的に参照し、そのファイルに記載されている情報に従って更新を行います。

まず、URL の形式について説明しましょう。この URL は、app.update.url という設定項目で以下のように指定されています。

https://aus2.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml

ユーザの環境によって変数に値が代入され、実際に参照する URL が決まります。以下は、Firefox 9 から Firefox 9.0.1 へ更新する際に利用される URL です。

Windows Vista / 日本語版
https://aus3.mozilla.org/update/3/Fi...ult/update.xml
Mac OS X / 日本語版
https://aus2.mozilla.org/update/3/Fi...ult/update.xml

このドキュメントでは、Firefox 9 の Windows 向け日本語版を例に取って説明します。

クライアントサイドの設定

app.update.url の値を自社の URL に変更します。これを変更するには、Firefox 設定エディタ (Firefox のロケーションバーで about:config と入力) を開き、app.update.url.override という名前で新しい文字列形式の設定を作成し、新たな値を指定する必要があります。既定の更新 URL は、上記のように様々な変数が含まれていますが、通常は、製品、バージョン、ロケール、プラットフォームを判別するだけでも十分でしょう。以下、myserver はあなたのサーバに読み替えてください。

http://myserver/update/%PRODUCT%/%VERSION%/%LOCALE%/%BUILD_TARGET%/update.xml

集中管理機能 (MCD) を使って設定する場合は、サーバサイドの設定ファイル (autoconfig.jsc) に以下の行を追加します。

lockPref("app.update.url.override", "http://myserver/update/%PRODUCT%/%VERSION%/%LOCALE%/%BUILD_TARGET%/update.xml");

サーバサイドの設定

まず、aus2.mozilla.org から、オリジナルの更新情報ファイル (update.xml) を取得してきます。取得元は上記の通りですが、変数のうちバージョンごとに変わるビルド ID は、Web コンソール を開いて navigator.buildID と入力することで確認できます。不明な場合は、初期設定の Firefox で HTTP ログ を有効にし、更新チェックを行って (更新はキャンセルして構いません) Firefox を終了させ、ログから URL を特定します。

取得した update.xml ファイルを、app.update.url.override の設定に合わせてサーバ上に置き、実際の URL にアクセスして XML が表示されることを確認します。また、Firefox 9 の [ヘルプ] メニューから [ソフトウェアの更新を確認] を選択し、更新が見つかることを確認します。

http://myserver/update/Firefox/9.0/ja/WINNT_x86-msvc/update.xml
<?xml version="1.0"?>
<updates>
    <update type="minor" displayVersion="9.0.1" appVersion="9.0.1" platformVersion="9.0.1" buildID="20111220165912" detailsURL="https://www.mozilla.com/ja/firefox/9.0.1/releasenotes/">
        <patch type="complete" URL="http://download.mozilla.org/?product=firefox-9.0.1-complete&os=win&lang=ja" hashFunction="SHA512" hashValue="82fb329eb72e417e2d924842998f7afc1b4a8831a5a9ca56b761f7f1c997aa4c04f86b53df08f9228548d4562d303b61410d4f2e9fa62ce1f0cc675331adaa91" size="19644083"/>
        <patch type="partial" URL="http://download.mozilla.org/?product=firefox-9.0.1-partial-9.0&os=win&lang=ja" hashFunction="SHA512" hashValue="0478ec3a615f918142f83e8fbc30e6885c281c5c57479b9673f292d22fbbd1b11a04e50fb949937de7d5c41e13ab8d382d6c4e015ff9f737afac06a866cdcb50" size="2005104"/>
    </update>
</updates>

ダウンロードサーバの変更

更新バイナリ (パッチ) を download.mozilla.org ではなくあなたのサーバからダウンロードさせたい場合は、update.xml に書かれている URL からバイナリを取得し、あなたのサーバへコピーしてから、update.xml ファイル内の URL をあなたのサーバに変更します。更新バイナリには、通常の更新に使用される差分版 (partial) と、差分更新が失敗した場合にダウンロードされる完全版 (complete) の 2 種類があることに留意してください。

<?xml version="1.0"?>
<updates>
    <update type="minor" displayVersion="9.0.1" appVersion="9.0.1" platformVersion="9.0.1" buildID="20111220165912" detailsURL="https://www.mozilla.com/ja/firefox/9.0.1/releasenotes/">
        <patch type="complete" URL="http://myserver/update/Firefox/9.0.1/ja/WINNT_x86-msvc/complete.mar" hashFunction="SHA512" hashValue="82fb329eb72e417e2d924842998f7afc1b4a8831a5a9ca56b761f7f1c997aa4c04f86b53df08f9228548d4562d303b61410d4f2e9fa62ce1f0cc675331adaa91" size="19644083"/>
        <patch type="partial" URL="http://myserver/update/Firefox/9.0.1/ja/WINNT_x86-msvc/partial.mar" hashFunction="SHA512" hashValue="0478ec3a615f918142f83e8fbc30e6885c281c5c57479b9673f292d22fbbd1b11a04e50fb949937de7d5c41e13ab8d382d6c4e015ff9f737afac06a866cdcb50" size="2005104"/>
    </update>
</updates>

例えば IT 部門で検証が終わるまで更新を提供しないときは、以下のように XML ファイルの内容を空にしておきます。

<?xml version="1.0"?>
<updates></updates>

セキュリティに関する配慮

Firefox の既定の更新 URL は HTTPS で、SSL を通じて提供されていることに気付いたかもしれません。SSL はサーバに若干の読み込み負荷を与えるので、通常の HTTP を使用したい気にさせられるでしょう。しかしそれはいけません。

すべてのユーザは、更新の有無にかかわらず、更新サーバに定期的に問い合わせを行います (初期設定では 1 日 1 回となっています)。保護されているネットワークの外部、特に公共の無線 LAN スポットから接続しているユーザにとっては、接続をハイジャックされて悪質な更新バイナリをダウンロードさせられる潜在的な可能性があります。SSL はこの手の攻撃から守ってくれます。update.xml ファイルは小さなものなので、SSL の経費をケチったりしないでください。

大きな更新バイナリそのものは、安全でないサーバから安全にダウンロードすることができます。これは、更新情報ファイル (update.xml) にクライアント検証用のハッシュ値が含まれているためです。このハッシュ値は update.xml が安全に提供されている場合のみ信頼されます。

関連記事

ドキュメントのタグと貢献者

タグ: 
Contributors to this page: ethertank, Kohei
最終更新者: ethertank,