マルチドメインを管理していて
これまで1台のサーバ(仮想も含め)で1ドメインの管理をこれまで行ってきた。
今回、複数のドメインを1台で管理した方が良い案件だったので、設定することにした。
webサーバはapache2のvirtual設定でOK。
IPは一つだけで、名前ごとに異なるコンテンツを返す。
メールはpostfix+dovecotで、virtual mailboxで管理することに。
ftpは、chrootして、各ユーザのhome以下のweb用ディレクトリに配置。
ここまでは、別に難しくはない。
テストでは、Thunderbirdを利用していたのが、トラブルを見つけにくくしていた。
Thunderbirdは、知らないSSL証明書を受け取った場合、例外として処理するかどうかを自分で設定できる。
僕が設定してテストしている時に、例外指定をしたため、以後警告も何も言わずに送受信ができていた。
ところが、WindowsLiveやOutlook/OutlookExpressは、起動時に確認され、OKしても再度メーラーを起動すると、再び警告が出てくる。
WindowsLiveだと「接続しているサーバーは、確認できないセキュリティ証明書を使用しています。」って、ええやんか〜。
問題はSSLだった
オレオレ証明書(自己署名証明書)の使い方と、設定の計画にあった。
デフォルトでは、勝手に証明書を作ってくれて、それを使えば基本的には問題ない。
(というか、これまで問題になったことはない)
ただし、先にも書いたように1マシン=1ドメインの場合だ。
ホスト名でCN名を埋め込んで証明書を作るため、マルチドメインの場合の処理が厄介だった。
今回はvpsを借りているので、デフォルトでは借りたvpsによる名前のホストで作ってくれている。
そこで、通常通りSSLを使用して、設定してみると…。
う〜む。
メーラーのサーバ設定を、オリジナルのドメインにしたり、仮想ドメインにしたり、IPにしたりしてみたがダメ。
サーバから証明書を持ってきて、登録するが上手くいかない。
あれこれやっているうちに、vpsがデフォルトで付けてくれたマシン名だとSSLで警告が出なくなることで閃いた。
利用するマシン名で証明書を作りなおしておけば、いいんじゃね?
各メーラーにはサーバ名はIPで振る約束になっている。これは好都合。
そこで、IP名でのCN名を埋め込んだ証明書を作成して、それを元にSSLを通すことに。
自己署名証明書の作成
重要なので、再掲しておく。
$ sudo -s
# cd /etc/ssl/private
# openssl genrsa -des3 1024 > mail.key
パスフレーズ聞かれるので、とりあえず覚えていられる程度のものでOK。
# chmod 600 mail.key
# openssl rsa -in mail.key -out mail.key
これでパスワードを解除したもので上書きしておく。この作業をしておかないと、パスフレーズの入力を求められる。するとプログラムが停止してしまうので…。
(先に使ったパスフレーズが必要)
# cd ../certs
# openssl req -utf8 -new -key ../private/mail.key -x509 -days 3650 -out mail.pem -set_serial 0
として、パブリックキーを生成。とりあえず有効期限10年程度の証明書にしてみた。(何度も設定したくないしね)
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Aichi
Locality Name (eg, city) []:Nagoya
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Hoge Ltd
Organizational Unit Name (eg, section) []:xxxx-net
Common Name (eg, YOUR name) []:aaa.bbb.ccc.ddd ←IPで設定
Email Address []:root@hoge.com
postfixの設定
/etc/postfix/main.cfを編集
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
となっているのを、先ほど作ったmail.keyとmail.pemに修正。
smtpd_tls_cert_file=/etc/ssl/certs/mail.pem smtpd_tls_key_file=/etc/ssl/private/mail.key
これで、postfixを再起動。
# service postfix restart
/etc/dovecot/conf.d/10-ssl.confを編集
ssl_cert = </etc/ssl/certs/mail.pem
ssl_key = </etc/ssl/private/mail.key
保存したら、dovecotを再起動。
# service dovecot restart
クライアント用の処理
PC用に証明書を変換する。
# openssl x509 -in mail.pem -outform DER -out mail.der
このファイルを、web経由でも、USBメモリでもftpでもなんでもいいので、PCに持ってくる。(以下Windows上の作業)
mail.derをダブルクリック。
「証明書のインストール」→「証明書のインポートウィザード」→「証明書を次のストアに配置する」→「信頼されたルート証明機関」
最後に警告が出るが、OKで完了。
これで証明書がインポートされ、しかも信頼していることになる。
メーラーを起動しても、何も言わずに送受信できるようになった。
ふ〜。
ここまでたどり着くのに、予想以上に時間がかかりましたわ…。
まあセキュリティが強化されているのは分かるけど、Thunderbirdくらいに自分の責任で、証明書を信用するってことにしてくれれば、こんなに手間はかからないのに…。
良し悪しですな…。
無事使えるようになって、めでたしめでたしとな。
チカレタゎ。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。