Security Tips
 

SSL非対応メーラのSSL化

りょうわ あきら
2004/4/14

 SSL/TLSによる暗号化通信は、Webアプリケーションにおいては通信相手の認証と暗号化のスタンダードとなり、VPNへの応用も話題となっている。最近は大手プロバイダのメールサービスにおいてもその利用が広まってきているが、使い慣れたメールクライアントがSSL非対応なために、せっかくのサービスを有効活用できないケースもあるだろう。

 そうした場合に役に立つのが、SSLトンネリングツールのstunnelである。stunnelの最新版4.05では、クライアント/サーバ認証や証明書検証、SMTPPOP3でのプロトコルインラインSSL*1にも対応した、優れたトンネリングツールとなっている。

*1
通信開始時は平文での通信を行うが、STLSやSTARTTLSといったコマンドによってSSLによる暗号化通信を開始する方法のこと。

 Windows版のバイナリは、http://www.stunnel.org/download/binaries.htmlから入手できる。入手できるのは圧縮ファイルではなく実行ファイルそのものである。また動作にはOpenSSLが必要になる。同サイトで0.9.7dのバイナリが提供されているのでこちらも入手しておこう。zip形式で配布されているものを入手すればよいだろう。入手したファイルは適当なフォルダに展開する。ここでは、C:\Program Files\stunnelに展開することにする。

2004/04/13  07:49    <DIR>          .
2004/04/13  07:49    <DIR>          ..
2004/03/17  21:58         1,539,233 libeay32.dll
2003/09/30  11:04               189 libeay32.dll.asc
2004/03/17  21:58           626,301 libssl32.dll
2003/09/30  11:04               189 libssl32.dll.asc
2004/03/17  21:58         1,134,080 openssl.exe
2003/09/30  11:04               189 openssl.exe.asc
2004/04/12  19:02            66,048 stunnel-4.05.exe
               7 個のファイル           3,366,229 バイト
               2 個のディレクトリ   5,860,294,656 バイトの空き領域

 インストールおよび起動の前に設定ファイルを用意する。SMTPとPOP3でインラインのSSL接続を利用したい場合は、次のようにstunnel.confファイルを記述する。

########## SSL 関連全般
# SSL クライアントとして利用するので yes を指定
client=yes


# 証明書の検証に使う CA 証明書ファイル名
CAfile=C:\Program Files\stunnel\cacerts.pem


# 証明書検証オプション
# デフォルトは検証しない。
verify=2


#クライアント証明書を使う場合には、cert に証明書、key に秘密鍵のファイル名を指定する。
#cert=
#key=


# ログの出力レベルを指定する。
debug=notice


# ログファイルを記録する。
output=C:\Program Files\stunnel\stunnel.log
service=stunnel


########## POP3 サーバの設定
# accept には、stunnel がメーラからの POP3 接続を待ち受けるホスト名またはアドレスとポートを指定する。他のホストから接続する必要は無いので、localhost を指定しておけばよい。
# connect には、使用する SSL 対応 POP サーバのホスト名またはアドレスとポート番号を指定する。
# POP3 の STLS コマンドを使用したインライン SSL を使用する場合は、protocol にプロトコル名 pop3 を指定する。
[pop_server]
accept=localhost:10110
connect=mail.example.com:110
protocol=pop3


########## SMTP サーバの設定
# accept には、stunnel がメーラからの SMTP 接続を待ち受けるホスト名またはアドレスとポートを指定する。他のホストから接続する必要は無いので、ホスト名またはアドレスには localhost (127.0.0.1) を指定しておけばよい。
# connect には、使用する SSL 対応 SMTP サーバのホスト名またはアドレスとポート番号を指定する。
# SMTP の STARTTLS コマンドを使用したインライン SSL を使用する場合は、protocol にプロトコル名 smtp を指定する。
[smtp_server]
accept=localhost:10025
connect=mail.example.com:25
protocol=smtp

 この設定では、証明書検証オプションを2に設定し、サーバ証明書の検証を行うことにしている。このため、サーバ証明書の検証に使用するルートCA証明書を入手しておく必要がある。大手メールサービスを利用する場合なら、通常はWindowsにプリインストールされている証明書ストアのデータをエクスポートして使用すればよいだろう。SSLサーバ証明書の検証に利用可能なルート証明書のエクスポートは次の手順で実行できる。

  1. インターネットのプロパティを開き、「コンテンツ」タブを選択
  2. 「証明書」ボタンクリックし、「信頼されたルート証明機関」タブを選択
  3. 「目的」ドロップダウンで「サーバ認証」を選択
  4. リストされた証明書から必要なルート CA 証明書を選択して、「エクスポート」ボタンをクリック
  5. ウィザードに従ってファイルに保存

 しかし、このファイルはそのままではstunnelで利用できないので、次のようにopensslコマンドを使用してフォーマットを変換しておく。

C:\Program Files\stunnel>openssl pkcs7 -inform der -in cacerts.p7b -print_certs >cacerts.pem

 これで、準備は完了である。まずは起動してみよう。

C:\Program Files\stunnel>.\stunnel-4.05.exe

 設定に問題がなければ何のエラーもなく起動し、タスクトレイにアイコンが表示されるはずである。アイコンをダブルクリックするとログウィンドウが表示される。あとはお気に入りのメーラの設定で接続先のサーバをstunnel設定ファイルで記述した、ローカルのポートに変更するだけである。メールを受信してみると、うまくいけばログウィンドウには次のような接続記録が表示されるはずだ。

図1 接続記録の例画像拡大

 ここで接続できなかった場合には、接続先アドレスやプロトコル指定、検証用のルートCAファイルのいずれかに問題があるということなので、もう一度設定を見直してほしい。Windows XP/2000での使用においては、stunnelをサービスとして実行することができる。サービスとして実行するには、コマンドラインで-installオプションを使用する。逆にアンインストールするには-uninstallオプションをつけて実行すればよい。

C:\Program Files\stunnel>.\stunnel-4.04.exe -install

C:\Program Files\stunnel>net start stunnel
stunnel サービスを開始します.
stunnel サービスは正常に開始されました。

 このほかにも設定次第でstunnelはさまざまに応用することができる。各自ドキュメントを参照しながら、工夫してセキュアな通信環境を手に入れていただきたい。

Security Tips Index



Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間