3wareの9650SEというRAIDコントローラが6.1-RELEASEのインストーラでは認識されずにそのままではインストールできない。で、どうやらメーカー提供の最新ドライバなら大丈夫ということらしいので、ドライバを差し替えたCD-ROMイメージを作成して無事インストールできたので、メモ。
◆ CD-ROMの準備
まずはインストール用のCD-ROMを準備。
# mdconfig -a -t vnode -f /tmp/6.1-RELEASE-i386-bootonly.iso -u 4 # mount_cd9660 /dev/md4 /cdrom # mkdir /tmp/6.1_iso # cd /cdrom # tar cf - . | tar xvfC - /tmp/6.1_iso
# cp /path/to/twa.ko /tmp/6.1_iso/boot/kernel/twa.ko
# cd /tmp/6.1_iso # mkisofs -b boot/cdboot -no-emul-boot -J -r -ldots -l -L -o /tmp/freebsd_6.1_twa.iso .
◆ インストール
作成したCD-ROMを使ってインストール。
OK load /boot/kernel/twa.ko
OK boot
# mkdir /tmp/cdrom # mount_cd9660 /dev/acd0 /tmp/cdrom # cp /tmp/cdrom/boot/kernel/twa.ko /boot/kernel/twa.ko # vi /boot/loader.conf --- twa_load="YES" ---以上
昨日とは違うマシンにFreeBSDをインストール。今度のブツは省スペースマシンでCD-ROMドライブやFDDが付いていない。手元にあったUSBのCD-ROMドライブではブートできなかったので、ネットワークインストール。良い説明がこちらにあるので、最低限のメモだけ。
◆ インストールマシンの準備
BIOSのメニューに入って、ネットワーク経由でのブートを有効化。さらにNICのオプションでネットワークブートをenableにする必要があった。
◆ MACアドレスの調査
MACアドレスが分からない場合、適当にDHCPサーバを立ててとりあえず動的に割り当ててしまえば、dhcpdのログに以下のような記録が残るので、このログからMACアドレスを取得する。
May 12 16:09:14 server dhcpd: DHCPDISCOVER from 00:11:22:33:44:55 via em0
◆ DHCPサーバの設定
MACアドレスが取得できたらDHCPサーバを設定。
option domain-name "example.com"; option domain-name-servers 192.168.0.1; default-lease-time 1800; max-lease-time 7200; : host pxeboot { hardware ethernet 00:11:22:33:44:55; fixed-address 192.168.0.5; filename "pxeboot"; option root-path "192.168.0.1:/pxeboot/root"; }
上の設定で指定した/pxeboot/rootには昨日のメモに書いた方法を参考にブートCDのファイルをコピー。
◆ TFTPサーバの準備
まずはファイルの準備。
# mkdir /pxeboot/tftproot # cp /pxeboot/root/boot/pxeboot /pxeboot/tftproot/
次に、念のため/etc/hosts.allowを編集してアクセス制限。1行目はテスト用。
# tftpd : localhost 127.0.0.1 : allow tftpd : 192.168.0.5 : allow tftpd : ALL : deny
次に/etc/inetd.confを編集して、TFTPサーバを有効化。2行目はローカルテストではまった名残。
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /pxeboot/tftpboot tftp dgram udp6 wait root /usr/libexec/tftpd tftpd -l -s /pxeboot/tftpboot
inetdにHUPシグナルを送るのを忘れずに。
◆ NFSサーバの設定
/etc/rc.confを確認して、NFSサーバを有効化。
rpcbind_enable="YES" nfs_server_enable="YES" rpc_lockd_enable="YES" rpc_statd_enable="YES" mountd_enable="YES"
次に、/etc/exportsを編集してマウントを許可。
/pxeboot/root 192.168.0.5
mountdにHUPシグナルを送るのを忘れずに。
◆ インストール
ネットワーク経由でインストール。
OK vfs.root.mountfrom="ufs:/dev/md0c"
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を作る際に入力するパスワードは、今後の署名の際に必要となる重要なものなので、厳重に管理する。
今回、exeファイルへの署名やFirefoxへのインポートなどはPKCS#12形式のファイルで行うので、まずは準備したmycert.spcをPKCS#12形式に変換する。
マイクロソフトから、pvkimprt.exeをダウンロードしてインストール。
コマンドプロンプトを開き、pvkimprtを実行
pvkimprt -PFX mycert.spc mykey.pvk
証明書のエクスポートウィザードが起動する。
以下では、cs.pfxという名前でPFXファイルを作成したと仮定する。
マイクロソフトから、Platform SDKとCAPICOM 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を起動して、以下の手順でPKCS#12形式ファイルをインポートする。
インポート後の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ファイル名> <ソースツリーの基点ディレクトリ>