雑記

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-11 [長年日記]

[FreeBSD] インストールCD-ROM内のドライバ置き換えとインストール

3wareの9650SEというRAIDコントローラが6.1-RELEASEのインストーラでは認識されずにそのままではインストールできない。で、どうやらメーカー提供の最新ドライバなら大丈夫ということらしいので、ドライバを差し替えたCD-ROMイメージを作成して無事インストールできたので、メモ。

CD-ROMの準備

まずはインストール用のCD-ROMを準備。

  • 3wareのダウンロードサイトから、最新のドライバをダウンロード。展開するとソースのtarボールとカーネルモジュール(twa.ko)ができる。
  • 6.1インストールCD-ROMのisoイメージをダウンロードして、内容をコピーする。
    # 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
    
  • 最新のカーネルモジュールを展開したCD-ROMツリー内にコピー
    # cp /path/to/twa.ko /tmp/6.1_iso/boot/kernel/twa.ko
    
  • (ここで、/tmp/6.1_iso/boot/loader.confを編集して起動時にtwa.koが自動で読み込まれるようにできたかも)
  • mkisofsを使ってisoイメージを作成
    # 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に焼いて準備完了

インストール

作成したCD-ROMを使ってインストール。

  • CD-ROMから起動して「Welcome to FreeBSD!」の画面で「6. Escape to loader prompt」に進む
  • 書き換えたモジュールを読み込む
    OK load /boot/kernel/twa.ko
    
  • ブート
    OK boot
    
  • ディスクコントローラが認識され、インストールできればOK
  • インストールの最後にCD-ROM内のtwa.koをHDDにコピーすること。さもないととても悲しいことに…
    <Alt>+<F4>でシェル画面に移動して以下を実行
    # 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"
    ---
    
    以上

2007-05-12 [長年日記]

[FreeBSD] ネットワークインストール

昨日とは違うマシンに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シグナルを送るのを忘れずに。

インストール

ネットワーク経由でインストール。

  • 設定に問題がなければ、ネットワークからpxebootを読み込んで「Welcome to FreeBSD!」の画面が表示されるので、「6. Escape to loader prompt」に進む
  • メモリディスクをroot filesystemとする
    OK vfs.root.mountfrom="ufs:/dev/md0c"
    
  • ブートしてインストール

2007-05-16 [長年日記]

NTT大規模障害

よりによってこの日に来るか。おかげで本日リリースのサービスの確認作業が遅れてもう朝の4時です。

10時からビッグサイトか…。


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ファイル名> <ソースツリーの基点ディレクトリ>