雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|

2007-05-22

[SSL] ThawteのMulti-Purpose Certificateを使った署名

ThawteのMulti-Purpose Certificateを利用すると、1つの証明書でexe、Netscape(Firefox等も含む)、Office VBA、Java、Apple(MacOS?)等のアプリに署名ができるらしい。ただ、このリンク先からたどれる各ドキュメントの情報が微妙に古くてもったいない。ということで、いろいろなサイトの情報を参考に何とかexeファイルとFirefoxの拡張機能への署名に成功したので、メモ。これで$199(更新は159)/年は零細企業にはありがたい。$399(319)/2年という価格設定はかなり謎ですが。

コードサイニング証明書の購入

Internet ExplorerでThawteにアクセスして"Microsoft Authenticode (Multi-Purpose) Certificate"を購入、mykey.pvkとmycert.spcを準備する。mykey.pvkは申請時に"certificate private key generation"で指定したファイルで、申請に利用したコンピュータ上に作成される。mycert.spcはThawteの購入後のSTATUSページで"Microsoft Authenticode Format"形式でダウンロードしたファイル。mykey.pvkを作る際に入力するパスワードは、今後の署名の際に必要となる重要なものなので、厳重に管理する。

PKCS#12形式のファイルの生成

今回、exeファイルへの署名やFirefoxへのインポートなどはPKCS#12形式のファイルで行うので、まずは準備したmycert.spcをPKCS#12形式に変換する。

マイクロソフトから、pvkimprt.exeをダウンロードしてインストール。

コマンドプロンプトを開き、pvkimprtを実行

pvkimprt -PFX mycert.spc mykey.pvk

証明書のエクスポートウィザードが起動する。

  • 秘密キーのエクスポートで「はい」
  • エクスポートファイルの形式では「PKCS #12」が選択されているのを確認し、「証明のパスにある証明書を可能であればすべて含む」、「強力な保護を有効にする」にチェックを入れる

以下では、cs.pfxという名前でPFXファイルを作成したと仮定する。

実行形式(.exe)ファイルへの署名

マイクロソフトから、Platform SDKCAPICOM SDKをダウンロードしてインストール。

C:\Program Files\Microsoft CAPICOM 2.1.0.2 SDK\Lib\X86\capicom.dllをC:\Program Files\Microsoft Platform SDK\Binにコピーする。

cs.pfx生成時のパスワード<Password>を使って、exeファイル<File>に署名する。

signtool sign /f cs.pfx /p <Password> <File>

署名したexeファイル<File>に、Verisignのタイムスタンプサーバを利用してタイムスタンプを付加する。タイムスタンプを付加すると、証明書自体の有効期限が切れても、インストール時の警告が出なくなる。らしい。

signtool timestamp /t http://timestamp.verisign.com/scripts/timstamp.dll <File>

タイムスタンプを付加したファイルのプロパティを見ると、副署名欄に"VeriSign Time Stamping Services Signer"による署名が追加されている。署名された時点で有効であった証明書で署名したことを証明するために署名する??

Firefox/Thunderbird/etc用拡張機能への署名

拡張機能の開発は終わって、ソースがあるものとする。

Firefoxを起動して、以下の手順でPKCS#12形式ファイルをインポートする。

  1. [ツール]→[オプション]でオプション画面を開く。
  2. [詳細]アイコンをクリックして[暗号化]タブを開く
  3. [証明書を開く]ボタンをクリックして証明書マネージャーを開く
  4. [あなたの証明書]タブを開いて[インポート]ボタンをクリック(初めてのインポート時にはパスワードの設定を求められる)
  5. cs.pfxを指定し、パスワードを入力して、インポートに成功したら完了

インポート後のC:\Documents and Settings\<ユーザ名>\Application Data\Mozilla\Firefox\Profiles\<ランダム文字列>.default フォルダの下にあるkey3.db, cert8.db, secmod.db の3ファイルが署名に必要なファイルとなるので、これを<db_dir>にコピー。

ftp.mozilla.orgからNSS,NSPRをダウンロードして展開。今回利用したバージョンは、nss-3.11.4とnspr-4.6.4。

コマンドプロンプトを起動してパスを通す。MSの署名ツールと同名なので、パスの順番に注意する。

SET PATH=<展開先>\nss-3.11.4\bin;<展開先>\nss-3.11.4\lib;<展開先>\nspr-4.6.4\lib;C:\Program Files\Mozilla Firefox;%PATH%

証明書の名前を確認する。

certutil -L -d <db_dir>

次のような出力が得られる。エクスポート時に指定したのでThawteのCAの証明書も含まれているが、末尾が「u,u,u」となっている行の頭が署名に使う証明書の名前となる。

test CodeSigning                                             u,u,u
Thawte Code Signing CA - Thawte Consulting cc c,,c

確認した証明書の名前を使って署名する。こちらのsigntoolは、パッケージングと署名を同時にやるらしいので、xpi化したファイルではなく、パッケージ化したい拡張機能のソースの基点ディレクトリを指定する。

signtool -d <db_dir> -k "test CodeSigning" -p <パスワード> -X -Z <生成するXPIファイル名> <ソースツリーの基点ディレクトリ>


2008-05-22

[Red Hat] NICの識別ではまる

Red Hat LinuxってNICのインターフェース名だけでなくMACアドレスまで律儀に設定情報として記録するらしい。

ハード障害が発生したのでHDDだけ予備機に移したところ、通信ができずにはまってしまいました。おかげで現地に2度行く羽目に。

かんべんして。