2009年7月29日水曜日

Apache FOP エラー対策

DocBook を試してみていて,XSL-FO プロセッサが必要になったので,Apache FOP を MacPorts からインストールしてみた.FO ファイルから PDF ファイルを作成しようとしたら,次のようなエラーが出たので,その対策についてメモ.
2009/07/29 5:57:56 org.apache.fop.hyphenation.Hyphenator getHyphenationTree
致命的: Couldn't find hyphenation pattern en

なんか,ハイフネーションパターンがライセンスの問題で FOP に含まれていないかららしい.なので,それをインストールすればエラーはでなくなる.インストール手順は次のとおり.

1. Objects for Formatting Objectsからダウンロードする.
2. 解凍する.
3. fop-hyph.jar を /opt/local/share/java/fop/0.94/build/ にコピーする.(0.94というバージョン番号は変化する可能性がある.)

これで,エラーが出なくなる♪日本語を含む PDF を出力する話もしないとな.

関連サイト:
Apache FOP
Objects For Formatting Objects

参考文献:
Red Hat Bugzilla: Bug 479685

2009年7月27日月曜日

Twitter "Follow" Badge を貼ってみた

自分の Twitter へのリンクをバッジとして,ページに貼ることができる.右側のようにね.

GO2WEB20: Twitter "Follow" Badge for your site/blog

説明するまでもないけど,アカウント名とラベル,色,左右,表示ポジションを選択してコードを生成するだけ.あとは,生成された JavaScript を Blogger なら,レイアウト>HTMLの編集>テンプレートを編集の末尾,body終了タグの直前にコピーアンドペーストすればバッジが貼られる.

お試しあれ♪

2009年7月14日火曜日

Cyrus IMAP サーバ OTP エラー対策

Cyrus のエラーを解決するのをあきらめて,UW-IMAP を使ってたりするわけだけど,やっぱり Cyrus IMAP 使いたいよねってことで,エラーに改めて取り組むことに.林檎生活100: Cyrus IMAP Server エラーで書いたエラーとは違うけど,次のようなエラーの対策について.
Jul 14 06:36:32 lucifer imap[752]: OTP unavailable because can't read/write key
database /etc/opiekeys: Permission denied

OTP は,One Time Password のことで,それが有効になっているからこのエラーが出るらしい.なので,imapd.conf(FreeBSD なら /usr/local/etc/imapd.conf になる.)の次の行を有効にすることで,ひとまずは出なくなる.普通に使っているなら,この行はきちんと設定されているような気がするけど.
sasl_mech_list: cram-md5 digest-md5

さて,残りのエラーが問題なんだよなぁ…….

追記(2009年7月14日):
コメントで頂いた解決策について.security/cyrus-sasl2 をインストールする際に,config を OTP=off にすることでこのエラーはでなくなる.たしかに,OTP を使わないのであれば,OTP=off でのインストールという方がクールだね.

参考文献:
雨と樹海とFreeBSDと: Postfixのインストール

2009年7月12日日曜日

Namecheap で格安 SSL 証明書を取得する方法

林檎生活100: OpenSSL で自己署名証明書を作成するで,SSL 証明書を作成したが,きちんとした認証局によって署名された証明書ではないので,ブラウザやメーラからの SSL 接続時に警告が出てしまうという問題がある.

そこで今回は,ほとんどのブラウザで問題なく認証される SSL 証明書の発行サービスである RapidSSL で,SSL 証明書を取得する.この RapidSSL は,本家で$69,日本の正規販売パートナーで3,200円ということで非常に安い.でも,もっと安く済ませるために Namecheap という海外の販売サイトを使用して,$10.95という価格で取得してみることにする.

まず,最初ににやらなければならないことは,証明書署名要求 (CSR) を作成することだ.って偉そうに言ってるけど,SSL の仕組みはちゃんと理解してないので,参考文献にあげた本のとおりのコマンドだw
# cd /etc/mail/certs
# umask 066
# openssl req -new -x509 -nodes -out newcert.pem -keyout key.pem
# openssl x509 -x509toreq -in newcert.pem -signkey key.pem -out csr.pem
# rm newcert.pem

インタラクティブに入力が必要な部分は,自己署名証明書を作成するときと同じ.自己署名証明書と秘密鍵を作って,自己署名証明書から証明書署名要求を作成する.証明書署名要求を作成しさえすれば,自己署名証明書はいらないので削除する.(次の画像は,自己署名証明書を作成する部分のキャプチャ.)


生成された証明書署名要求 csr.pem ファイル中の "-----BEGIN CERTIFICATE REQUEST-----" から "-----END CERTIFICATE REQUEST-----" までを RapidSSL で申請する際に使用する.

ということで,この証明書署名要求をコピー&ペーストできるようにしなければならない.そこで, SSH を有効にして,Mac のターミナルからログインすることにした.まず,FreeBSD 側の設定.
# vi /etc/rc.conf
sshd_enable="YES"(この行を追記する.)
# /etc/rc.d/sshd start

Mac のターミナルからの接続.
$ ssh takuya@192.168.1.254

というかんじ.いずれ,SSH の設定などのエントリを書きたいなぁ.ちなみに,無効化する時の手順はこの通り.
# /etc/rc.d/sshd stop
# vi /etc/rc.conf
sshd_enable="NO"(NO に書き換えるか,行を削除する.)

下準備は整ったので,Namecheap での作業に入ろう.


右側の "Login to your account" の "Signup for a Free Account" をクリックし,新規アカウントを作成する.




ヘッダメニューの "SSL Certificate" の "Low Cost SSL Certificate" をクリックする.


"Rapid SSL" の "Add to Cart" をクリックする.


"DURATION" を必要なら変更し,"UPDATE CHANGES" をクリックし,"Standard Checkout" をクリックする.



支払い方法は,適宜選択のこと.入金した資金から支払うか,直接クレジットカードで支払うかを選択できる.今回は,PayPal 経由で支払いたかったので,上の項目を選択した.


入金されてないので,"Add Funds to your account" をクリックして入金する.


入金の詳細は省略.





支払い完了.


黄色い通知メッセージの "SSL Certificate Page" をクリックする.


"Activate Now" をクリックする.


今回のは Web サーバ用じゃないので,"Other" を選択する.Web サーバ用なら,Web サーバ名に合ったものを選択する.そして,さっき作成した証明書署名要求 csr.pem の "-----BEGIN CERTIFICATE REQUEST-----" から "-----END CERTIFICATE REQUEST-----" までを貼り付ける.



"CSR Information" を確認し,"APPROVER EMAIL"(承認用メールアドレス)を選択する.届くメールアドレスであれば,好きなものを選んで OK.


連絡先情報を入力する.


申請完了.メールを待って(30分以内には来たはず.),メールに記述されている URL をクリックする.



「承認します」をクリックして,注文を承認する.


注文完了.メールを待って(1日以内には来たはず.),メールに記述されている "-----BEGIN CERTIFICATE REQUEST-----" から "-----END CERTIFICATE REQUEST-----" までを,cert.pem というファイルに記述して保存する.
# cd /etc/mail/certs
# vi cert.pem

CA のルート証明書を取得し,ハッシュ名のシンボリックリンクを作成する.
# cd /etc/mail/certs
# fetch -o cacert.pem http://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.cer
# ln -s cacert.pem `openssl x509 -noout -hash < cacert.pem`.0

最後に,証明書を検証して,証明書が正しいかチェックする.OK なら csr.pem はいらないので,削除する.
# cd /etc/mail/certs
# openssl verify -CAfile cacert.pem cert.pem
# openssl verify -CApath . cert.pem
# rm csr.pem

以上で,格安の SSL 証明書の取得は完了♪メールサーバにこの証明書を使わせることで,警告は表示されなくなるはずだ.

関連サイト:
RapidSSL
Namecheap

参考文献:
sendmailクックブック―設定と運用のためのレシピ集

2009年7月6日月曜日

Legna のデザイン

こんな風に,Web サイトをデザイン中.まだ,XHTML や CSS では書いてないんだけど,ほぼこのデザインで決まり.ちょっと寂しいから,画像を制作してるんだけど,なかなか完成しないorz


林檎生活100: FreeBSD でサーバ構築の作業は,この前ふと思い立ったときに Sendmail 編と IMAP 編の設定を完成させ, Apache 編のインストールと基本設定,DAV 設定,Digest 認証設定,SSL 設定などを一通りこなしてしまったので,ほぼ最後までのネタは出揃っているんだよねw本当は,エントリを全て書いてから Web デザインとかやったらいいんだろうなぁwww

2009年7月4日土曜日

OpenSSL で自己署名証明書を作成する

SSL を使って暗号化通信をするためには,公開鍵証明書が必要になる.(なんで公開鍵証明書が必要かとか,SSL の仕組みの話については,参考文献を参照してね.僕がちゃんとした解説をする自信がないのでw)なので,SSL を使いたいときは,証明書を準備する必要がある.知ってる人もいると思うけど,この証明書ってのがタダじゃない.有名な VeriSign で発行してもらうと,一番安いものでも85,050円/年もするのだ.

自宅サーバで SSL を使いたいだけのために,こんな大金は支払えないので,自己署名証明書というものを作成する.俗に,オレオレ証明書ともいうらしい.そのニュアンス通り,「僕がこの人間は僕だと言うから,この人間は僕です.」という論理になるような証明書のこと.(VeriSign の証明書なら,「VeriSign がこのサーバがサーバ A だと言うから,このサーバはサーバ A です.」というようになる.)本来は,どっかに証明してもらわなければならないんだけど,自宅サーバの SMTP や IMAP に接続するときに SSL を使用したいということなら,自己署名証明書でもいいよねということで,今回のエントリの内容になるわけ.

FreeBSD 7.1-RELEASE での自己署名証明書のつくりかたはこんなかんじ.UNIX 系 OS ならどれでも同じ.

1. ディレクトリ作成&移動
証明書を置くディレクトリを適当な場所に作成し,そのディレクトリに移動する.
# mkdir /usr/local/certs
# cd /usr/local/certs

2. マスク設定
作成される証明書が,ほかのユーザから読まれないようにマスクを設定する.つまり,所有者だけが読める (-rw-------) ファイルが生成されるようにする.
# umask 066

3. 秘密鍵と証明書を作成
openssl req コマンドで新しく (new) 1年間 (-days 365) 有効な X509 証明書 (x509) を暗号化しないで (nodes) 作成する.秘密鍵が key.pem で,証明書が cert.pem になる.いくつか質問事項(下記のは,Mac OS X 上でやったものを貼付けたのだったりするw)に答えると作成される.Common Name の項目が重要で,ここにサーバのホスト名 (FQDN) を入力する.例えば,この証明書をメールサーバで使用すると仮定し,メールクライアントの設定で,IMAP サーバの項目に lucifer.legna.org と入力するなら,Common Name も lucifer.legna.org にしなければならない.
$ openssl req -new -days 365 -x509 -nodes -keyout key.pem -out cert.pem
Generating a 1024 bit RSA private key
.................................................++++++
........................++++++
writing new private key to 'key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Hokkaido
Locality Name (eg, city) []:Sapporo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Legna
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:lucifer.legna.org
Email Address []:root@legna.org

自己署名証明書はこんなかんじで簡単につくれる.証明書の内容を表示するには,次のコマンドを入力すればいい.textオプションは,テキストで表示するオプションで,証明書の詳細まですべて表示してくれる.noout オプションは,証明書を出力しないというオプションだ.証明書を出力してもそのままじゃ人間には理解できないからね.(cat などで中身を表示してみればわかるが,ASCII 文字がめちゃくちゃに並んでいるようにしか見えない.)
$ openssl x509 -text -noout < cert.pem 
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
ea:56:42:a9:71:18:04:78
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=JP, ST=Hokkaido, L=Sapporo, O=Legna, CN=lucifer.legna.org/emailAddress=root@legna.org
Validity
Not Before: Jul 3 14:16:18 2009 GMT
Not After : Jul 3 14:16:18 2010 GMT
Subject: C=JP, ST=Hokkaido, L=Sapporo, O=Legna, CN=lucifer.legna.org/emailAddress=root@legna.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:ba:eb:0a:6d:b7:43:26:50:eb:c9:4a:91:5b:a3:
8f:ec:3c:11:5d:93:59:7d:3d:4a:b2:af:6f:cf:26:
84:7c:b9:fa:43:53:98:f5:48:70:d5:18:97:87:f1:
14:bd:b1:e2:26:16:8a:6c:d2:11:f2:3a:c5:81:19:
3f:ed:72:0d:ee:7d:69:b8:7c:9d:8b:53:e1:f4:43:
4e:75:0d:2e:d6:a7:1b:2f:8c:27:6a:e0:f6:cc:48:
94:10:bf:5c:26:ff:bd:6b:a5:a0:e8:eb:01:0f:c0:
04:09:9e:03:09:7c:b8:25:82:9d:49:25:a7:83:d4:
35:e2:15:4d:bc:52:c3:db:8d
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
CB:00:73:E3:4D:59:10:14:B7:EF:35:A2:E6:78:55:84:B4:7E:A3:55
X509v3 Authority Key Identifier:
keyid:CB:00:73:E3:4D:59:10:14:B7:EF:35:A2:E6:78:55:84:B4:7E:A3:55
DirName:/C=JP/ST=Hokkaido/L=Sapporo/O=Legna/CN=lucifer.legna.org/emailAddress=root@legna.org
serial:EA:56:42:A9:71:18:04:78

X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha1WithRSAEncryption
5b:b6:d5:42:9c:e8:23:1e:0c:e4:ec:f6:13:02:0d:cc:09:d9:
90:68:ee:7e:f6:5d:75:f1:1c:28:5d:91:de:46:d0:7c:46:30:
9d:65:fa:b2:01:04:12:5c:a5:6d:44:c9:2f:3f:b7:1e:a0:d4:
5c:52:4a:e5:d5:0c:bb:3f:56:e3:2d:89:27:ef:77:22:0c:ec:
96:94:0b:53:69:b8:14:75:d5:b1:08:5f:a2:86:44:60:f6:6b:
b4:e7:dd:12:32:2a:a3:ab:51:97:c4:45:e5:8d:96:e7:e1:ad:
10:cd:13:7e:38:06:16:5d:34:db:e7:95:76:34:d9:10:e8:e2:
32:1a

とりあえず,これがあれば SSL を使用して暗号化通信ができるようになる.さらに,Namecheap で RapidSSL という格安のサーバ証明書を取得する方法について,近々エントリを書く予定.価格も10.95ドル/年(2009年7月4日現在の為替で,1050円くらい!)と出してもいい値段だし,きちんとした機関が証明してくれるので,ブラウザやメールクライアントで SSL で接続しても,証明書が認証できないから危険かもしれないなんて警告はでなくなる♪お楽しみに〜.

参考文献:
Wikipedia Secure Sockets Layer

2009年7月3日金曜日

Inspiron Mini 12 修理

DELL の対応は思ってたより悪くないw電話の担当者が日本語を母国語としてないようなので,意思疎通に多少の難点はあるけど.

○電話から修理完了までのプロセス
6/12 テクニカルサポートに電話する
6/12 メールがくる
6/12 メールで破損部の画像を送る
6/21 連絡がなかったため,メールで破損部の画像を再送する
6/22 メールで連絡がくる
6/23 破損の経緯をメールで伝える
6/23 電話で連絡がくるがとれなかったw
6/23 引き取り日選択についてのメールがきてたが,みてなかったw
6/23 再度電話がきて,引き取り日を確定する
6/23 引き取り日確定についてのメールがくる
6/27 佐川急便さんに Inspiron Mini 12 の本体のみをそのまま渡す
〜修理期間中2回ほど電話がくる〜
7/3 修理完了

○修理箇所
・左側ヒンジ
・HDD(なぜか壊れていて,40GBから80GBになって返ってきたw)

2009年7月2日木曜日

Cyrus IMAP Server エラー

メールサーバ構築の関係で,FreeBSD 上に Cyrus IMAP Server をインストールしてみたんだけど,起動時にこんなエラーがでた.
Jul  3 01:14:18 lucifer ctl_cyrusdb[67112]: DBERROR: error listing log files: DB_NOTFOUND: No matching key/data pair found
Jul 3 01:14:18 lucifer ctl_cyrusdb[67112]: DBERROR: archive /var/imap/db: cyrusdb error

Ports の mail/cyrus-imapd23 と mail/cyrus-imapd22 でこの現象がでた.mail/cyrus-imapd2 は問題なかった.

ソースをちょこっと追ってみたんだけど,動作を完全に理解できなかったのであきらめた.ctl_cyrusdb が定期的に実行されて,checkpoint をつくるらしいんだけど,そこでどうやらエラーを吐いてる.エラーを吐かなくするパッチは簡単につくれるんだけど,なぜエラーになってるのかを完全に追いきれなかったし,このエラーによって生じている問題自体が不明なんだよね…….

追記(2009年7月17日):
コメントを頂いたおかげで解決♪ユーザ作成(メールも1通送信してみた.)すればエラーはでなくなる.運用してみれば解決するというなんとも単純な僕のミスでした.UW-IMAP から Cyrus IMAP Server に移行しようかなぁ…….