タグ : TLS

メールサーバー間の SMTP 通信を暗号化する

メールサーバー間の通信で、TLSを使った暗号化が可能なのは知っていたが、面倒なので放置していた。
が、Gmail などで暗号化通信で送られてきたメールにはその旨記載があったり、世の中も動いてきてるので、今回、対応することにした。

Debian の場合

で、CA証明書を導入しておくことを忘れない。

/etc/postfix/main.cf に以下の行を挿入。

FreeBSD の場合

で、CA証明書を導入しておくことを忘れない。

/usr/local/etc/postfix/main.cf に以下の行を挿入。

これで、送信時に暗号化通信を行える相手には、暗号化して送信し、そうでない相手には平文で送信するようになる。

共通

次に受信時の暗号化通信だが、メールのヘッダに暗号通信の記録を残すことを含め、main.cf へ次の行を挿入。

無論、SSL 証明書を Let’s Encrypt などから取得して、設定しておくことを忘れない。

以上で対応は終了だった。簡単すぎて拍子抜け。もっと早くに対応しておくべきだった。

SSLでネームベースのバーチャルホスト

某所にある Apache WebサーバのSSLモジュールをOpenSSLから、GnuTLSへ変更しました。何のためにそんなことをしたかというと、タイトル通り、SSLでNamed Virtual Hostを有効にするためです。

 

そんなことできんの? SSLってIP1個につき、1ホストじゃないとできないんじゃないの? と思ったあなた、そんなことはありません。知ってるよ。ワイルドカード証明書でしょ? でもあれ高いんだよね−。と思ったあなた。違います。ワイルドカード証明書のことではありません。IPアドレス1個で、全く関係のないドメインがバーチャルホストできるんです。え? 知ってる? おまえが遅れてるだけ? すいません。最近、サーバ関係は手を抜いてるもんで。^^;

 

そもそも私がこれを知るきっかけになったのは、Postfix メーリングリストにドメイン名の変更に当たり、二つのドメインを同時にSSLで受け付けられないかという質問が投げられたことにありました。で、その回答中に、複数のドメインをひとつの証明書にいれてもらう = subjectAltName を使用するというのがあったんです。

 

subjectAltName? そんな属性がSSLにあるんかいな、とググったところ、SSL・サーバ証明書の発行と認証 CSPSSLというページを発見。おおーっ。確かにある。で、さらにググったところ、まっちゃ139というサイトで勉強会に使用したというプレゼンページを発見。凄いわかりやすくて勉強になりました。ありがとうございます。>まっちゃ139さん

 

詳しくはそちらをご覧頂くとして、SSLでもNamed Virtual Host が可能。ちゃんとRFCにもなってて、ワイルドカード証明書よりスジがいいってこともわかりました。そういえば、GoDaddy でも、Multiple Domains SSL売ってたなぁ、あれもこれ使ってるんだとか思ったり。:P

 

ですが、subjectAltName では、それ用のSSL証明書が当然のことながら必要です。これが悩ましい。というのも、実は私、SSL証明書を四通持ってるんです。うち、二通はしまいっぱなし。いや、以前は使ってたんですが、IPアドレスをいくつも持ってるのが経済的に厳しくなって、サーバを解約しちゃったものですから、余ってたんですね。もったいない。そこへIP増やさなくてもSSLで使えるかもってんですから飛びついたんです。でもまあsubjectAltNameはそういうものでした。しかし! 天は我を見放さなかったのです! (大袈裟)

 

SNI (Server Name Indication) であれば、証明書を無駄にせずにすむ! IE6は対応してないみたいだけど、今時そんなブラウザ使ってるやつぁ無視! マイナーどころのブラウザについては、RFC追っかけてちゃんと作ってれば動く! 動かないのは使ってるやつの運が悪いだけ! (笑) というわけで、この方法でいってみようと決心したわけです。

 

ところがどうも、Apache 標準の mod_ssl は、パッチを当てないといかんらしい。ディストリビューションに取り込まれてないパッチはちょっと当てたくないなぁと思い、その必要がない、GnuTLS + mod_gnutls でいくことに決めたわけです。mod_gnutlsは、セキュリティホールが去年報告されたようなのですが、最新版ではちゃんと対応されてるので、問題なしと判定。ビルドしてインストールしました。サンプルについてた設定ファイルのキーワードが間違ってて、小一時間悩みましたけど、無事起動。そして、手持ちのSSL証明書を全部インストールして、Apache を再起動。おそるおそるそれぞれにアクセスしてみると…

 

やったよ! うまくいったよ! (当たり前)

Safai対応してるって書いてるサイト、あんまりなかったけど、普通に見えるよ! 

 

ということで、どうやったかを書くと tips として役に立つと思うんですが、なんせセキュリティがらみなもんで、具体例はちょっと…インストールの手順はまた後日ってことで。

 

Twitter links powered by Tweet This v1.8.3, a WordPress plugin for Twitter.