xmail.dojo.jp
 SSLセットアップ

XMail はバージョン 1.24 からネイティブで SSL/TLS に対応しました。このページは XMail で SSL/TLS を利用するための情報を提供するものです。ただし、本ページは Windows 版 XMail バイナリパッケージを利用した場合の説明となっています。ソースコードから作業をする場合や UNIX、UNIX クローンの場合についてはとくに触れていません。

公認 CA(認証局)から有料の証明書を購入せずに簡易に SSL/TLS サービスを開始したいユーザは "即席SSL - これで十分かも?" に合わせたセットアップを行ってください。多くはそれで十分でしょう。

なお、XMail の関連ツール XMailCFG を使用すれば、openssl コマンドの知識がなくても証明書や CA(自己認証局)の作成などをフォームから簡易に実行することができます。


SSL と TLS


SSL(Secure Socket Layer) は Netscape 社が開発したセキュリティプロトコルで、ネットワーク間通信を暗号化するための仕組みです。そのバージョン 3(SSL v3) をもとに IETF(The Internet Engineering Task Force) がインターネット標準の規格(RFC 3207)としてまとめたものが TLS(Transport Layer Security) です。

SSL は通信路を暗号化するための仕組みですが、それに公開鍵認証基盤(PKI)による証明書ベースの双方向認証などを追加したものが TLS です。今日、実際に利用される運用技術は TLS ですが、一般には SSL と呼び習わされるので本ページでは SSL/TLS と表記しています。

  Top ↑

XMail の SSL/TLS 機能


XMail の SSL/TLS 実装は以下のように大組織での本格運用にも耐えるものですが、一方で私的運用にも簡易に利用できるものになっています。

  Top ↑

証明書と秘密鍵を用意する


SSL/TLS によるサービスを開始するためには証明書と秘密鍵が必要です。この 2 つがないと XMail は SSL/TLS サービスを実行できません。XMail では証明書は server.cert という名前で、秘密鍵は server.key という名前で、双方とも XMail の MailRoot ディレクトリ内に置く必要があります。

以下は公式な証明書と秘密鍵を作成する手順ですが、もしあなたがすでにウェブサービスなどで使用している証明書とそれとペアになっている秘密鍵、CA 証明書を持っているのなら、それを server.cert、server.key、cert.pem という名前で MailRoot 内にコピーすればそのまま公式なものとして使用できる可能性があります。証明書はメールサーバのドメイン名(コモンネーム)を証明するものなので、同じドメイン名を使うのであればメールサービスでもそのまま流用できるはずだからです。

  1. XMail はバージョン 1.24 以降をインストールします。

  2. OpenSSL ツールキットがシステムにインストールされていない場合、XMail に同梱されている OpenSSL ライブラリ(openssl.exe と libeay32.dll、ssleay32.dll)を Windows の system32 フォルダなどパスの通った場所にコピーします。OpenSSL ツールキットは最新のものを使うようにしましょう。

  3. SSL 設定ファイル openssl.cnf を証明書を作成する場所にコピーしておきます。ただし、これは openssl コマンドの入力を簡易にするためで、必須というわけではありません。作成した証明書は最後に MailRoot ディレクトリ内にコピーするので、作成はどこで行ってもかまいません。また、.cnf 拡張子のファイルは Windows からは短縮ダイヤル用ファイルとして認識されるため、エクスプローラで見ると詳細表示の場合でも openssl と表示されます。

  4. まず秘密鍵を作成します。証明書を作成する場所でコマンドプロンプトを開き以下のようにコマンドを実行します(プロンプトを省略しています)。

  5. openssl genrsa -des3 -out private.key 1024
    または
    openssl genrsa -des3 1024 > private.key

    コマンドを入力すると、"Enter pass phrase for server.key: と秘密鍵用のパスフレーズを聞いてくるので、同じものを 2度入力します。このパスフレーズは次のステップが終わるまでは忘れないでください。なお、-des3 オプションを省略するとパスフレーズを聞いてきません。自己署名した証明書で簡易にサービスを始めたい場合はそれでもかまいません(後述する "即席SSL - これで十分かも?"を参照)。

    1024 は秘密鍵の長さを指定するものですが、あなたが証明書を取得しようとしている CA の指示に従う必要があります。自己署名を行うのであれば 2048 などと任意に指定できます。一般に秘密鍵は長ければ長いほど安全性は高まるはずですが、その分だけシステムへの負荷は高まります。また、CA に支払う代金も高くなります。

    openssl コマンドを実行したとき、「指定されたプログラムを実行できません。」とエラー表示され、秘密鍵が作成できないときは Microsoft のサイト(ダウンロードセンターなど)に行き、Microsoft .NET Framework をインストールしてみてください。

    このエラーは、実行プログラムが依存する Visual C++ DLL が見つからない場合に表示されるもので、このときイベントビューアを見ると「従属するアセンブリMicrosoft.VC80.CRTを検出できませんでした。エラー:参照されたアセンブリはシステムにインストールされていません。」などと記録されます。

  6. 秘密鍵ファイルからパスフレーズを削除します。これは秘密鍵をロードするたびにパスフレーズを必要としたのではサーバの運営に支障があるからです。たとえば、無人運転でサーバを自動起動した場合に処理がそこで止まってしまいます。

    openssl rsa -in private.key -out server.key
  7. CSR(Certificate Signing Request、証明書署名要求)を作成します。CSR では登録組織の識別情報を入力します。以下のようにコマンドを実行します。なお、自己署名による証明書でサービスを行う場合はこのステップは必要ありません。

    openssl req -new -key server.key -out cert.csr -config openssl.cnf

    以下のように問い合わせに答えます。このサンプルは、自組織名(会社名など任意)が XMail Inc. で、メールサーバのドメイン名が mx.dojo.jp であるとしたものです。

    Country Name (2 letter code) [AU]:  JP (国別コード)
    State or Province Name (full name) [Some-State]:  Tokyo (都道府県名)
    Locality Name (eg, city) []:  Hachiouji (市区町村名)
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:  XMail Inc. (組織名)
    Organization Unit Name (eg, section) []:  (組織内部署名など、省略可能)
    Common Name (eg, YOUR name) []:  mx.dojo.jp (サーバの FQDN)
    Email Address []:  postmaster@dojo.jp (管理者メールアドレス)

    上記以外にもいくつか問い合わせがありますが、すべて空白(エンター)でかまいません。都道府県名や市区町村名、組織名などは実情に合わせてください。

  8. 作成した CSR ファイル(cert.csr)をあなたの CA が指定する方法で CA に送付します。しばらくすると CA が自分の証明書でそれに署名したものをあなたに送付してくるでしょう。それがあなたのサーバの証明書になります(公開鍵証明書、デジタル ID)。CA は自分の証明書を含む CA チェーンの証明書も送ってくることがあります。

  9. 秘密鍵と証明書、CA 証明書(もしあれば)を XMail の MailRoot ディレクトリ内にコピーします。そのさい、証明書は server.cert という名前に、CA 証明書は cert.pem という名前にします。

    秘密鍵と証明書とはペアで使用するもので、どちらかが失われた場合は SSL/TLS 通信は直ちに不可能になります。秘密鍵はとくに重要です。それをもとに証明書が作成されるからです。必ずバックアップを取るようにしましよう。

  Top ↑

XMail をセットアップする


XMail は server.tab で SSL/TLS 関連の設定を行います。しかし、秘密鍵と証明書、CA 証明書が MailRoot ディレクトリ内に準備できていれば、SSL/TLS 関連の設定は何も設定しなくても直ちに SSL/TLS サービスが開始されます。そして、通常はそれだけで十分です。あとはクライアントに SSL/TLS 通信の案内を出してください。

■サービス拡張、カスタマイズのために

サービスを拡張したいですか?
デフォルトとは異なる動作をさせたいですか?
それなら server.tab で以下の編集をしてください。
server.tab を変更した場合は XMail の再起動を忘れずに。

CTRL サービス で TLS サポートを制御する
デフォルトインストールですでに CTRL サービスは SSL/TLS 対応となっていますが、TLS サポートを中止する場合は server.tab で EnableCTRL-TSL 変数の値を 0 にします。
TLS では、クライアントはまず非 SSL ポートに接続し、サーバが TLS 対応であればその後 TLS 暗号化通信に切り替えることができます。TLS サポートを中止すると、SSL 専用ポートを利用した暗号化通信のみが可能になります。これは他のサービスの場合も同様です。

POP3 サービスで TLS サポートを制御する
デフォルトインストールですでに POP3 サービスは SSL/TLS 対応となっていますが、TLS サポートを中止する場合は server.tab で EnablePOP3-TSL 変数の値を 0 にします。

SMTP サービスで TLS サポートを制御する
デフォルトインストールですでに SMTP サービスは SSL/TLS 対応となっていますが、TLS サポートを中止する場合は server.tab で EnableSMTP-TSL 変数の値を 0 にします。

リモートホストにクライアント証明書を要求する
XMail にアクセスするクライアントに証明書を要求する場合は server.tab に SSLWantCert 変数を追加し、その値を 1 にします。この場合、もしクライアントが証明書を送信してこない場合、XMail は強制的に接続を切断します。ただし、インターネットのメールサービスではクライアント証明書を要求するのは一般的ではありません。

リモートホストのクライアント証明書を検証する
SSLWantCert1 になっている場合で、クライアントから送られてきた証明書を CA 証明書チェインを利用して検証する場合は server.tab に SSLWantVerify 変数を追加し、その値を 1 にします。この場合、もしクライアント証明書の正当性を検証できなかった場合、XMail は強制的に接続を切断します。

CA 証明書を certs.pem ファイルから参照する
信頼する CA 証明書を MailRoot ディレクトリ内の certs.pem ファイルから参照するには server.tab に SSLUseCertsFile 変数を追加し、その値を 1 にします。

証明書をまとめたディレクトリから CA 証明書を参照する
信頼する CA 証明書を、それらをまとめてあるディレクトリ内から参照するには server.tab に SSLUseCertsDir 変数を追加し、その値を 1 にします。この場合、CA 証明書ファイル群は MailRoot ディレクトリ内の certs ディレクトリにおく必要があります。
ただし、certs ディレクトリ内に置く CA 証明書ファイルの個々の名前はオリジナル名をハッシュしたものでなければならないため、XMail に同梱されている Perl スクリプト c_rehash.pl を利用してそれらのコピーを作り直す必要があります。

CA 証明パスの深さを制御する
証明書を検証するプロセスを証明書チェーンのどの段階までたどるかを指定するには server.tab に SSLMaxCertsDepth 変数を追加し、その値に数値を指定します。ここで指定する最終段階のトランスポイント(信頼点)に達してもその証明書の正しさを証明できない場合、XMail はその証明書の検証に失敗したとみなし、接続を強制切断します。

自己署名による証明書を許可する
自己署名が行われた証明書を受け入れる場合、server.tab に SSLAllowSelfSigned 変数を追加し、その値を 1 にします。

中継サーバ間でも SSL/TLS 通信を試行する
一般に中継サーバ間で SSL/TLS 通信が行われることはまれですが、そこでも STARTTLS コマンドを利用した SSL/TLS 通信を試行する場合は server.tab の SMTP-TLS 変数の値を 1 にします。

■IP アドレスやポート番号をカスタマイズしたい?

XMail による SSL/TLS サービスを特定の IP アドレスやデフォルトとは異なるポートで行いたい場合、起動オプションでそれらを制御することができます。XMail のこの機能は強力で、任意数の任意の IP アドレスの任意のポートでサービスを行うことが可能です。詳細は "その他の参考情報" ページの "XMail 起動オプション" を見てください。

■SSL なんていらない?

XMail はデフォルトで SSL/TLS が有効になりますが、SSL 機能は不要だというユーザのために、サービスそのものを停止することができます。詳細は "その他の参考情報" ページの "XMail 起動オプション" を見てください。

  Top ↑

クライアント(メーラ)をセットアップする


XMailでの SSL/TLS 対応が完了したなら、あとはユーザに対して以下のような案内を出してください。

  1. メーラで SSL/TLS 関連のオプションをオンにします。

  2. たんなる暗号化通信(SSL)だけでよい場合は、利用するポート番号をデフォルトの場合は POP3 を TCP/995 に、SMTP を TCP/465 にしますが、XMail はポート番号を任意に変更・追加できるのでそれに合わせる必要があります。

  3. TLS(STARTTLS) による拡張も利用する場合(XMail のデフォルト動作)、デフォルトで POP3 を TCP/110 に、SMTP を TCP/25 にしますが、XMail はポート番号を任意に変更・追加できるのでそれに合わせる必要があります。TLS の場合、まず非 SSL ポートに接続し、SSL/TLS 対応を確認してから SSL/TLS 通信に移行します。SSL/TLS がサポートされない場合、そのまま非 SSL 接続を行います。

  4. メーラで「証明書を検証する」というオプションがある場合、それをオンにすると自己署名を行った証明書を利用している場合は不都合が起きる可能性があります。

  5. Microsoft 社のメーラ OUTLOOK などの一部のバージョンでは STARTTLS オプションをオンにすると不都合が起きる可能性があります。その場合、たんなる SSL 通信を試みてください。

  Top ↑

即席SSL - これで十分かも?


これまでの説明は本式の SSL/TLS サービスですが、じつはもっと簡単に SSL/TLSサービス を開始する方法があります。お金をかけず、すぐにサービスを開始したいユーザは以下のようにしてください。

以下の説明は、自組織名(会社名など任意)が XMail Inc. で、メールサーバのドメイン名(FQDN)が mx.dojo.jp であるとし、XMail の MailRoot フォルダを C:\XMail\MailRoot としていますが、実際にはすべての項目で架空の内容を入力してもかまいません。

  1. XMail(1.24以降) をインストールします。

  2. XMail に同梱されている OpenSSL ライブラリ(openssl.exe と libeay32.dll、ssleay32.dll)を Windows の system32 フォルダなどパスの通った場所にコピーし、openssl.cnf を XMail の MailRoot フォルダ内にコピーしておきます。ただし、.cnf 拡張子のファイルは Windws からは短縮ダイヤル用ファイルとして認識されるため、エクスプローラで見ると詳細表示の場合でも openssl と表示されます。

  3. XMail の MailRoot フォルダでコマンドプロンプトを開き、以下のコマンドを実行します。
    C:\XMail\MailRoot> openssl genrsa 1024 > server.key
    これで秘密鍵が作成されます。

  4. 同じ場所で以下のコマンドを実行します。
    C:\XMail\MailRoot> openssl req -new -x509 -key server.key -out server.cert -config openssl.cnf
    コマンド実行後、openssl コマンドによるコンソールで以下のような入力を行います。

    Country Name (2 letter code) [AU]:  JP (国別コード)
    State or Province Name (full name) [Some-State]:  Tokyo (都道府県名)
    Locality Name (eg, city) []:  Hachiouji (市区町村名)
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:  XMail Inc. (組織名)
    Organization Unit Name (eg, section) []:  (組織内部署名など、省略可能)
    Common Name (eg, YOUR name) []:  mx.dojo.jp (サーバのドメイン名)
    Email Address []:  postmaster@dojo.jp (管理者メールアドレス)

    これで自己署名済みの証明書が作成されます。使用する openssl コマンドのバージョンや openssl.cnf の内容によってはその他の問い合わせがあるかもしれませんが、すべてエンターキー(空白のまま)でかまいません。

  5. その後 XMail の server.tab で必要なセットアップを行いますが、SSL/TLS 関連の設定は何も変更する必要はありません。

  6. XMail を(再)起動して準備完了です。

この方法で作成する証明書は信頼された CA に署名されていないので、もしクライアント(メーラ)で「証明書を検証する」オプションをオンにするとエラーになったり警告が表示されることになりますが、メーラの大部分はデフォルトではそのような動作をしないので問題は少ないはずです。

ただし、証明書の内容に問題があると毎回表示するタイプのメーラを使う場合は CA も自前で作成する方法があります。XMail の関連ツールである XMailCFG ではフォームから証明書や CA を作成することができます。


  Top ↑
Copyright(c) xmail.dojo.jp.
All rights reserved.