無鉄砲。ただし、とんこつは今回が今月初。
待合室らしきものができていた。入店待ちシステムも、行列から名前呼び出し型に変更されていた*1。
先週までのカレー祭り状態からは解放されたのか、普段どおりの手際よさに戻っていて、ひと安心。
*1 どうやら混乱があったらしく、また行列に戻ったという話もちらほら。
普段のメール環境はgouketsu.netで動いているSMTPとIMAP4を用いているのだが、ここ2年程は、sshで掘ったトンネル経由でメールの読み書きを行っていた。このままでもとくに不自由はなかったのだが、最近状況が一変。W-ZERO3[es]なんてアイテムを入手したからには、[es]からもIMAP4経由でメールの読み書きができるようにしたい。
だた、やはり、パスワードを平文で流すのは避けたい。ということで、gouketsu.netのIMAP4サーバをSSL化することに。
なお、以下の例は、Debian GNU/Linux を用い、IMAPサーバはdovecotを用いるものとする。
本格的にするとなれば、どこかちゃんとしたところから認証してもらう必要があるのだろうが、個人メールのやりとりだけできれば十分なので、今回はオレオレ認証局で認証した証明書を使う。そこで、まずはオレオレ認証局を作成する。
まずは、シェルで以下の操作を行う。
% sudo su # apt-get install openssl # cd /etc/ssl # /usr/lib/ssl/misc/CA.sh -newca
ここで、いろいろ入力を求められる。
CA certificate filename (or enter to create)
ここは何も入力せずにEnter押下。
Making CA certificate ... Generating a 1024 bit RSA private key .++++++ .........................................................++++++ writing new private key to './demoCA/private/./cakey.pem' Enter PEM pass phrase:
ここは何か適当にパスフレーズ。
Verifying - Enter PEM pass phrase:
もう一度パスフレーズ。
----- 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]:
都道府県名を入れておけばいい*1。"Nara"とした。
Locality Name (eg, city) []:
市町村名を入れておけばいい*2。"Kashihara"とした。
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
適当に。"gouketsu.net"とした。
Organizational Unit Name (eg, section) []:
何も入力せずEnter押下。
Common Name (eg, YOUR name) []:
これも適当に"gouketsu.net"とした。
Email Address []:
これも適当にメールアドレスを入力しておく。ただし人様に迷惑がかかるようなことだけはないように。
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:
何も入力せずEnter押下。
An optional company name []:
何も入力せずEnter押下。
Using configuration from /usr/lib/ssl/openssl.cnf Enter pass phrase for ./demoCA/private/./cakey.pem:
最初に入力したパスフレーズを入力。あとは、
Check that the request matches the signature Signature ok Certificate Details: Serial Number: 2 (0x2) Validity Not Before: Sep 19 17:27:14 2006 GMT Not After : Sep 18 17:27:14 2009 GMT Subject: countryName = JP stateOrProvinceName = Nara organizationName = gouketsu.net commonName = gouketsu.net emailAddress = ********@gouketsu.net X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Cert Type: SSL Server Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:** X509v3 Authority Key Identifier: keyid:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:** Certificate is to be certified until Sep 18 17:27:14 2009 GMT (1095 days) Write out database with 1 new entries Data Base Updated
とメッセージ出力があり、シェルに戻る。 あとは、サーバ証明書を作成。
# openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt # openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca.der
両方とも行う必要はないとは思うが、一応やっておく。これらのうち、いずれかをクライアントにもっていき、証明書をインポートする。Windowsではダブルクリックすると、ダイアログに「証明書のインストール」ボタンがあるので押下。あとは、「証明書の種類に基づいて、自動的に証明書ストアを選択する」を選んでおけば、インポートできる。
# mkdir server # cd server # openssl req -new -out server.pem
ここで、CA作成時と同じような入力が必要だが、同じものを入れればいいので、割愛。
# openssl rsa -in privkey.pem -out server.key # cp -p server.key /etc/ssl/private
# openssl ca -out server.crt -infiles server.pem # cp -p server.crt /etc/ssl/certs
/etc/dovecot.dovecot.conf に
ssl_cert_file = /etc/ssl/certs/server.crt ssl_key_file = /etc/ssl/private/server.key
の2行を追記し、
# /etc/init.d/dovecot restart
でdovecotの再起動をかける。これで、SSLおよびSTARTTLSでの接続が可能となる。
本来なら、dovecotインストール時に、privateとcertsにdovecot.pemが生成されるのでこちらを用いるべきだとは思うが、今回は、手で作成したものを用いた。
SMTPも同様にSSLもしくはSTARTTLSでの接続を可能にしておきたい。
上記手順で、SSLもしくはSTARTTLS経由のIMAP4接続はできるようになった。が、SMTPのほうは何もしていない。submissionポートを開けておけば接続は可能だが、認証なしというのは怖いので、SASLの設定を行って認証をかける必要がある。その場合、パスワードを平文で流すのは避けたいので、IMAP4同様、SSLで暗号化しておく必要がある。
ということで、近いうちにSMTP接続をSSL化し、そのうえでSASLで認証をかけるようにすることにする。
主に、以下のサイトを見ながら設定を行いました。 著者各位に感謝致します。
*Messages* の更新情報取得には、antenna.lirs もしくは index.rdfをご利用ください。 豪傑アンテナ の LIRSからも取得可能です。