PMailServer2 で SSL/TLS 通信を行う為には、認証局で署名された証明書、又は自己署名した証明書のインストールの必要があります。
SSL/TLS 通信を行う為の証明書は、認証局で署名された証明書と、その証明書に使用した秘密鍵がセットになった PKCS #12 形式の証明書が必要です。暗号化用の PKCS#7 の証明書ではご利用頂けません)

  1. 自己証明書では良くないのか?
    自己証明書でも SSL/TLS 通信は問題無くできます。ただしクライアント(メーラー側)で、証明書が正しく認証された物では無いという警告が出ます。
    (これはセキュリティ上、正しい動作です)
    また、クライアントによっては自己証明書でもユーザーの責任において正しい証明書として扱うことが出来る場合があります。

  2. 発行された証明書をインストールしたが IP アドレスで接続すると警告が出る
    証明書は、多くの場合「ホスト名(FQDN)に対して発行されます」、ホスト名が mail.example.com の場合でグローバルIPとプライベートIPで割り振られている場合(NAT)、LAN からグローバルIPでは接続が出来ない為、プライベートIPをクライアントで指定しますと、IP アドレスに対して証明書を要求することになり、警告が発生します。
    この場合は、hosts ファイルに設定をして頂くか、内向き用のDNSサーバーを立てて頂いて、IP では無くホスト名でアクセスすることにより回避することが出来ます。
    同様に複数のメールサーバーがある場合(mail1.example.com / mail2.example.com )や、Web サーバーとメールサーバーを別名で登録している場合なども、同様に警告が出る場合があります。
    この場合は、ドメイン単位で発行できるワイルドカード証明書や、IP レベルで発行できる IP証明書などが必要になる場合もあります。
    ワイルドカード証明書等については、ご利用される認証局へお問い合わせ下さい。

  3. 認証局から PKCS #7 形式で証明書が発行されインストールしたが通信が出来ない
    PMailServer2 では PKCS#12 で証明書と秘密鍵がセットになった PKCS #12 形式の証明書が必要になります。
    OpenSSL 等で、PKCS #7 証明書と秘密鍵を結合することにより PKCS #12 形式に変換することが出来ますので、PKCS #7 で発行された場合は、お手数ですが PKCS #12 形式へ変換を行って下さい。
    秘密鍵は、認証局にも提出しない本当の意味での秘密鍵です。秘密鍵についてのお問い合わせについては、A.K.I Software でもお答えできませんのでご了承下さい。
    PKCS #7 から PKCS #12 への変換については、証明書を発行した認証局へお問い合わせ下さい。個別の証明書についてのお問い合わせについても A.K.I Software でもお答えできません。

    参考までに下記は OpenSSL を使った一般的な PKCS#7 から PKCS#12 への変換方法です。
    下記は一例で未保障です。実際に変換する場合は、環境や証明書に合わせて便宜置き換えて下さい。
    利用している OpenSSL は 1.0 です。
    FQDN は example.com とします。

    1. まず、キーペアを作成します。
      openssl genrsa -des3 -out example.com.key 1024
      (DES3 で 1024bit を指定しています)

    2. 証明書要求(CSR)を作成します。
      openssl req -new -key example.com.key -out example.com.csr
      *認証局に依頼する場合は、CSR まで作成して、それを送り署名をしてもらうことになります。

    3. 証明書要求に対して署名を行います。
      openssl x509 -req -days 365 -sha1 -in example.com.csr -signkey example.com.key -out example.com.crt
      X.509証明書で、有効期限は 365 と設定しています。
      *上記はオレオレ認証局の場合です。認証局に依頼した場合は、この署名を認証局が行います。

    4. X.509 で作成された証明書を PKCS#7 に変換します。
      openssl crl2pkcs7 -certfile example.com.crt -out example.com.p7b -nocrl
      *認証局に依頼した場合は、CRT では無く PKCS#7 で送ってくる場合もあります。PKCS#7 で送ってくる場合は、ここまでやってくれます。

    5. PKCS#7 を 一旦 CER に変換します。
      openssl pkcs7 -in example.com.p7b -out example.com.cer -print_certs
      *面倒ならば Windows 上で PKCS#7(example.com.p7b) をダブルクリックし表示されたダイアログの右から証明書を選択し右クリックの「タスク」から「エクスポート」を選び「Base64 encoded X.509(.CER)」でエクスポートしてもOKです。

    6. CER にした証明書と秘密鍵を使って PKCS#12 に変換します。
      openssl pkcs12 -export -in example.com.cer -inkey example.com.key -out example.com.p12
      *PKCS#7 単体で PKCS#12 に変換することはできません。必ず秘密鍵が必要になります。

    7. PKCS#12 をインポートします。
      PKCS#12 はパスフレーズによって保護されていますので、パスフレーズが無いとインストール出来ません。

  4. クレデンシャルハンドルが取得できないというエラーが発生する
    証明書ストアに証明書をインストールした際に正しい位置に証明書がインストールされていない場合や、SSL/TLS 通信で利用できない証明書が指定されていた場合などに発生します。
    インストール位置が正しい場合は、上記の「認証局から PKCS #7 形式で証明書が発行されインストールしたが通信が出来ない」もご参照下さい。

  5. MTA for STARTTLS で通信エラーが発生する
    配信先のサーバーで、利用できない暗号化形式の証明書が利用されている場合や、クライアント側にも証明書を要求している場合は、MTA for STARTTLS をご利用頂くことはできません。
    その場合は、お手数ですが、MTA for STARTTLS の例外登録に配信先のサーバーをご登録下さい。

  6. 証明書の形式がわからない
    (下記は一般的に使用される Windows 上での拡張子です。場合によっては変わりますのでご注意下さい。)