拡張機能への署名

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

ここで説明する手順は、Mac を使用し、既に認証局から正規の証明書を取得していることを前提としています。

署名ツールの入手

署名には NSS を使用します。これは MacPorts で簡単にインストールできます。

sudo port install nss

証明書のエクスポート

証明書が Firefox にインストールされている場合は、以下の手順でエクスポートします。筆者がベリサインから購入した証明書は Windows 版 Firefox へ直接インストールされました。

  1. [Firefox] ボタンをクリックし、[オプション] を選択します。
  2. オプション画面が開いたら、[詳細] パネルを開き、[暗号化] タブを選択します。
  3. [証明書を表示] ボタンをクリックします。
  4. 証明書マネージャが開いたら、[あなたの証明書] タブを選択します。
  5. 自分の組織の証明書を選択して [バックアップ] ボタンをクリックします。
  6. ファイル名を入力します。例「codesign.p12
  7. 証明書のバックアップファイルを保護するパスワードを入力し、[OK] ボタンをクリックします。
  8. デスクトップに P12 ファイルがエクスポートされます。

証明書データベースの作成

署名をするには、まず証明書データベースを作成する必要があります。

mkdir keystore
cd keystore
nss-certutil -N -d .

パスワードを聞かれますので、強固なパスワードを設定します。これで cert8.dbkey3.dbsecmod.db が作成されます。次に、上でエクスポートした証明書をインポートします。

nss-pk12util -i codesign.p12 -d .

データベース内の証明書を確認します。

nss-certutil -L -d .

ルート証明書と中間証明書の信頼を設定します。これはベリサインの例です。

nss-certutil -M -n "Verisign Class 3 Public Primary Certification Authority" -t "C,C,C" -d .
nss-certutil -M -n "VeriSign Class 3 Public Primary Certification Authority - G5 - VeriSign, Inc." -t "C,C,C" -d .
nss-certutil -M -n "VeriSign Class 3 Code Signing 2010 CA - VeriSign, Inc." -t "C,C,C" -d .

これでデータベースの準備は完了です。

署名

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

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

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

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

これで署名付き XPI ファイルが生成されます。

確認

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

参考資料

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

 このページの貢献者: Kohei
 最終更新者: Kohei,