Visit Mozilla.org

Signing an extension

出典: MDC

草案
このページは完成していません。

この記事では、Object Signing 対応コードサイニング証明書を利用して、Firefox や Thunderbird の拡張機能にデジタル署名を付ける方法について説明します。なお、以下の手順は、テーマなど他の XPI ファイルにも当てはまります。

目次

[編集] 署名ツールの入手

署名には NSPRNSS を利用します。必要なツールは Mozilla の FTP サーバから入手できます。

Windows では、以下の ZIP ファイルをダウンロードして展開してください。

Mac OS X と Linux では、以下のソースをダウンロードして、自分でビルドしてください。

次に、nspr/libnss/binnss/lib ディレクトリの中にあるファイルを、すべて同じディレクトリ、例えば /usr/lib/nss/ にまとめます。

[編集] パスの設定

環境変数に、上で作成したディレクトリへのパスを追加します。

Mac OS X では:

$ export PATH=${PATH}:/usr/lib/nss

[編集] 証明書データベースの作成

$ cd /Volumes/CertDB/ObjectSigning
$ certutil -N -d .

[編集] ヒント: ベリサインから発行された Object Signing 証明書のインポート

註: この記事は、特定の認証局 (CA) から発行された証明書を推奨することを意図したものではありません。以下の手順は便宜的に説明しているものです。

ベリサイン (VeriSign) で Object Signing 対応コードサイニング証明書を購入すると、ピックアップした証明書は Netscape 4.x のユーザプロファイルに含まれる証明書データベースに直接インストールされます。ただし、このデータベースの形式は古いため、このままではコード署名に利用できません。以下の手順で、Firefox に新規プロファイルを作成し、Netscape のプロファイルをインポートすることで、データベースを更新できます。

$ firefox-bin -CreateProfile FromNS4
$ firefox-bin -p FromNS4 -migration

Firefox を終了すると、プロファイルに以下の 3 つのファイルが生成されています。これらが証明書データベースファイルになりますので、プロファイルから取り出し、厳重に保管してください。

  • cert8.db
  • key3.db
  • secmod.db

[編集] 署名

署名ツールの基本的な使い方は以下の通りです。

$ signtool \
 -d (証明書データベースファイルを含むディレクトリへのパス) \
 -k (証明書のニックネーム) \
 -p (証明書のパスワード) \
 -X -Z (署名済みファイルの出力先パス+ファイル名) \
 (chrome ディレクトリ、chrome.manifest ファイル、install.rdf 
   ファイルなどを含む拡張機能の作業ディレクトリへのパス)

パスワードを直接スクリプトに記述するのは危険ですので、実際には以下のように使うと良いでしょう。

$ echo "Enter password for Object Signing:"
$ read MYPASSWORD
$ signtool \
 -d /Volumes/CertDB/ObjectSigning \
 -k "My Company's VeriSign, Inc. ID" \
 -p $MYPASSWORD \
 -X -Z ~/Desktop/MyExtension/dest/MyExtension-1.0.xpi \
 ~/Desktop/MyExtension/source
$ unset MYPASSWORD

[編集] 確認

出力された XPI ファイルを Firefox のコンテンツエリアにドラッグ&ドロップして、インストールダイアログを表示します。ファイル名とともに、あなたの会社名が表示されているはずです。

[編集] 参考資料