Sun Java System Calendar Server 6.3 管理ガイド

第 7 章 SSL の構成

Secure Socket Layer (SSL) とは、クライアントと SSL 機能を持つサーバー間のセキュリティー保護された接続上で、データの暗号化と復号化を行うプロトコルです。サーバーは、デジタル証明書と暗号化用の公開鍵をクライアントに送信します。クライアントがサーバーの証明書を信頼すると、SSL 接続が確立されます。一方から他方へと渡されるすべてのデータが暗号化されます。データを復号化できるのは、クライアントとサーバーだけです。

Sun Java System サーバーは、デジタル証明書を検証することで、ユーザー認証をサポートしています。サーバーとの SSL セッションを確立するときに、パスワードの代わりにユーザーの証明書を提示します。証明書の信頼性が確認されると、そのユーザーは認証されます。Calendar Server は、カレンダクライアントのエンドユーザーと Calendar Server との間でデータを暗号化するために、SSL プロトコルをサポートしています。SSL をサポートするために、Calendar Server は Sun Java System Messaging Server でも使用されている NSS (Netscape Security Services) certutil の SSL ライブラリを使用します。NSS certutil ツールは、Calendar Server 製品の sbin ディレクトリにバンドルされています。

ics.conf ファイルを使用して、Calendar Server のログインとパスワードだけ、またはカレンダセッション全体を暗号化するように Calendar Server を設定できます。

この章では、SSL の設定に必要な次の 3 つの作業とトラブルシューティングについて説明します。


注 –

Calendar Server はクライアントベースの SSL 認証をサポートしません。


7.1 Calendar Server の SSL 設定

この節では、Calendar Server に SSL を設定するための手順について説明します。

ここでは、次の内容について説明します。

Procedure証明書データベースを作成するには

ゲートウェイがクライアントに公開鍵を送信するには、証明書が必要になります。証明書には、ゲートウェイの公開鍵、ゲートウェイの証明書に関連付けられた識別名、証明書のシリアル番号または発行日、および証明書の有効期限が含まれています。証明書は、ゲートウェイの ID を検証する証明書発行局 (CA) で発行されます。CA とは、1 人以上のユーザーによって信頼されている証明書発行局で、X.509 公開鍵証明書および CARL、または証明書失効リスト (CRL) を発行および管理します。CA は、公開鍵インフラストラクチャー (PKI) の基礎的な構成要素です。一方、PKI とは証明書および公開鍵と秘密鍵のペアを管理するために使用される一連のポリシー、プロセス、サーバープラットフォーム、ソフトウェア、およびワークステーションであり、公開鍵証明書の発行、管理、失効を行います。

CA はすべての証明書にその名前を挿入し、CRL は秘密鍵を用いて証明書を生成し、デジタル署名を付加します。CA が信頼されていることを確認すると (直接、または証明パスを通じて)、その CA によって発行される証明書を信頼できます。名前を照合すると、CA によって発行された証明書を簡単に識別できます。ただし、公開鍵を使用して証明書が有効であることを確認することができます。

CA は、次の 4 つの基本的な PKI の機能を実行します。

サーバーの証明書とキーのペアは、そのサーバーの識別情報を示します。これらは、サーバー内部または取り外し可能な外部のハードウェアカード (スマートカード) の証明書データベース内に保存されます。Calendar Server に SSL を実装するには、証明書データベースが必要です。証明書データベースには、CA (証明書発行局) と Calendar Server の証明書を定義する必要があります。ここでは、概念的な情報と、作業に関する情報を提供します。

始める前に

証明書データベースを作成する前に、次のことを把握しておいてください。

  1. スーパーユーザー (root) としてログインするか、スーパーユーザーになります。

  2. /etc/opt/SUNWics5/config/sslpassword.conf に証明書データベースのパスワードを指定します。

    次に例を示します。


    # echo "password file entry" 
          /etc/opt/SUNWics5/config/sslpassword.conf

    password file entry の形式は次のとおりです。

    Internal (Software) Token: password

  3. 証明書データベースのディレクトリを作成します。次に例を示します。


    # cd /var/opt/SUNWics5
     # mkdir alias
  4. bin ディレクトリに移動し、証明書データベース (cert8.db) と鍵データベース (key3.db) を生成します。次に例を示します。


    # cd /opt/SUNWics5/cal/bin
     # ./certutil -N -d /etc/opt/SUNWics5/config
                     -f /etc/opt/SUNWics5/config/sslpassword.conf

    注 –

    certutil ユーティリティーを実行する必要がある場合は、例に従って実行するか、または certutil のヘルプページを参照して構文を理解してください。

    たとえばこの場合、-d / ファイル情報を指定せずに -N オプションを付けてユーティリティーを実行することは避けてください。


  5. デフォルトの自己署名ルート CA (証明書発行局) 証明書を生成します。次に例を示します。


    # ./certutil -S -n SampleRootCA -x -t "CTu,CTu,CTu"
     -s "CN=My Sample Root CA, O=sesta.com" -m 25000
     -o /etc/opt/SUNWics5/config/SampleRootCA.crt
     -d /etc/opt/SUNWics5/config
     -f /etc/opt/SUNWics5/config/sslpassword.conf -z
     /etc/passwd
  6. ホスト用の証明書を生成します。次に例を示します。


    # ./certutil -S -n SampleSSLServerCert -c SampleRootCA 
     -t "u,u,u"
     -s "CN=hostname.sesta.com, O=sesta.com" -m 25001
     -o /etc/opt/SUNWics5/config/SampleSSLServer.crt
     -d /etc/opt/SUNWics5/config 
     -f /etc/opt/SUNWics5/config/sslpassword.conf
     -z /etc/passwd

    hostname.sesta.com は、サーバーホスト名です。

  7. 証明書を検証します。次に例を示します。


    # ./certutil -V -u V -n SampleRootCA  
        -d /etc/opt/SUNWics5/config
     # ./certutil -V -u V -n SampleSSLServerCert 
       -d /etc/opt/SUNWics5/config
  8. 証明書をリスト表示します。次に例を示します。


    # ./certutil -L -d /etc/opt/SUNWics5/config
     # ./certutil -L -n SampleSSLServerCert 
       -d /etc/opt/SUNWics5/config
  9. modutil を使用して、使用できるセキュリティーモジュール (secmod.db) をリスト表示します。次に例を示します。


    # ./modutil -list -dbdir /etc/opt/SUNWics5/config
  10. alias ファイルの所有者を icsusericsgroup (または Calendar Server を実行するそれ以外のユーザーとグループの ID) に変更します。次に例を示します。


    # find /etc/opt/SUNWics5/config -exec chown icsuser {};
     # find /etc/opt/SUNWics5/config -exec chgrp icsgroup {};

7.1.1 自己署名付き証明書

自己署名付き証明書は、ゲートウェイ固有の秘密鍵で署名されています。自己署名付き証明書は安全ではありませんが、証明書付き証明書が利用可能になる前に証明書を必要とするテストアプリケーションで使用できます。自己署名付き証明書は、CA の署名ではなく、独自の証明書要求を署名として使用します。

共通のフィールドが 10 個あり、PKI を通じて自己署名付き証明書を作成する際に必須となるのが 6 つ、残りの 4 つが任意のフィールドです。必須フィールドは、シリアル番号、証明書署名アルゴリズム識別子、証明書発行者名、証明書の有効期限、公開鍵、および件名です。任意のフィールドは、バージョン番号、2 つの一意の識別子、および拡張子です。任意のフィールドは、バージョン 2 および 3 の証明書でのみ表示されます。

必須の有効期限のフィールドは、証明書が有効になった日と失効する日を示します。NSS certutil が示すデフォルトの有効期限は 3 ヶ月です。ただし、証明書の有効期限のデータは、失効日になるまで信頼することはできません。X.509 CRL 機構は、発行済みの証明書の状態のアップデートを提供し、証明書の失効日を管理します。また、CA は証明書の有効期限を 1 〜 2 年に強制的に設定します。

証明書が失効したり、有効期限が切れたりすると、更新する必要があります。更新とは、新しい証明書を発行することによって公開鍵証明書に示されているデータバインディングの有効期限を延長する行為、またはプロセスを指します。次のコマンドを使用すると、証明書を有効にできます。

-V -n certname -b validity-time -u certusage [-e] [-l] [-d certdir]

次に、証明書を有効にするためのコマンドの使用方法の例を示します。

certutil -V -n jsmith@netscape.com -b 9803201212Z -u SR -e -l -d certdir.

証明書データベースツールに、次のような結果が表示されます。

Certificate:'jsmith@netscape.com' is valid.

または、

UID=jsmith, E=jsmith@netscape.com, CN=John Smith, O=Netscape Communications Corp., C=US : Expired certificate

または、

UID=jsmith, E=jsmith@netscape.com, CN=John Smith, O=Netscape Communications Corp., C=US : Certificate not approved for this operation

Procedureルート CA (証明書発行局) に証明書を要求し、証明書をインポートするには

次の手順で、証明書要求の生成、PKI (Public Key Infrastructure) の Web サイトへの要求の送信、証明書のインポートを行う方法について説明します。これらの手順では、証明書データベースが config ディレクトリに配置されていることを前提としています。

始める前に

証明書データベースとパスワードファイルは、両方とも同じディレクトリに常駐する必要があります。ここで示すデフォルトは config ディレクトリですが、別のディレクトリを選択することもできます。その場合は、このあとの手順を実行して別のパスパラメータを設定する必要があります。

  1. スーパーユーザー (root) としてログインします。

  2. bin ディレクトリに移動します。

    # cd /opt/SUNWics5/cal/bin

  3. certutil を使用して、証明書発行局または PKI (Public Key Infrastructure) の Web サイトに適した証明書要求を作成します。次に例を示します。


    # ./certutil -R -s "CN=hostname.sesta.com, 
    OU=hostname/ SSL Web Server, O=Sesta, 
    C=US" -p "408-555-1234" -o hostnameCert.req 
    -g 1024  -d /etc/opt/SUNWics5/config 
    -f /etc/opt/SUNWics5/config/sslpassword.conf  -z /etc/passwd -a

    ここで、“hostname.sesta.com” はサーバーホスト名です。

  4. SSL Web サーバー用のテスト証明書を CA (証明書発行局) または PKI (Public Key Infrastructure) の Web サイトに要求します。hostnameCert.req ファイルの内容をコピーして証明書要求に貼り付けます。

    証明書への署名が完了し、準備が整った時点で通知が送信されてきます。

  5. 証明書発行局証明書チェーンと SSL サーバー証明書をテキストファイルにコピーします。

  6. 認証局証明書チェーンを証明書データベースにインポートし、認証チェーンを確立します。次に例を示します。


    # ./certutil -A -n "GTE CyberTrust Root"
        -t "TCu,TCu,TCuw" 
        -d /etc/opt/SUNWics5/config 
        -a 
        -i /export/wspace/Certificates/CA_Certificate_1.txt
        -f /etc/opt/SUNWics5/config/sslpassword.conf
    # ./certutil -A -n "Sesta TEST Root CA" 
        -t "TCu,TCu,TCuw" 
        -d /etc/opt/SUNWics5/config 
        -a 
        -i /export/wspace/Certificates/CA_Certificate_2.txt
        -f /etc/opt/SUNWics5/config/sslpassword.conf
  7. 署名された SSL サーバー証明書をインポートします。


    # ./certutil -A -n "hostname SSL Server Test Cert"
        -t "u,u,u" -d /etc/opt/SUNWics5/config 
        -a 
        -i /export/wspace/Certificates/SSL_Server_Certificate.txt
        -f /etc/opt/SUNWics5/config/sslpassword.conf
  8. 証明書データベース内の証明書をリスト表示します。

    # ./certutil -L -d /etc/opt/SUNWics5/config

  9. ics.conf ファイルで、署名された SSL サーバー証明書の SSL サーバーニックネームを設定します。例: “hostname SSL Server Test Cert”

    注: ics.conf ファイルの service.http.calendarhostname パラメータと service.http.ssl.sourceurl パラメータのホスト名は、SSL 証明書のホスト名と一致する必要があります (システムに複数のエイリアスがある場合)。例: calendar.sesta.com

Procedureics.conf ファイルの SSL パラメータを設定するには

Calendar Server に SSL を実装するには、ics.conf ファイルの特定のパラメータを設定する必要があります。次の表に示されているパラメータのいずれかが ics.conf ファイルにない場合、指定した値とともにファイルに追加します。システムの起動時 (start-cal の実行時) に ics.conf が読み取り専用の場合、新しい値は Calendar Server が再起動されるまで反映されません。SSL パラメータの説明については、「E.2.10 Calendar Server SSL 構成パラメータ」を参照してください。

  1. 設定を変更する権限を持つ管理者としてログインします。

  2. /etc/opt/SUNWics5/cal/config ディレクトリに移動します。

  3. 古い ics.conf ファイルをコピーして名前を変更し、保存します。

  4. 次の表に示すパラメータを 1 つ以上編集します。

    パラメータ 

    値 

    encryption.rsa.nssslactivation

    "on"

    encryption.rsa.nssslpersonalityssl

    "SampleSSLServerCert"

    encryption.rsa.nsssltoken

    "internal"

    service.http.tmpdir

    "/var/opt/SUNWics5/tmp"

    service.http.uidir.path

    "html"

    service.http.ssl.cachedir

    "."

    service.http.ssl.cachesize

    "10000"

    local.ssldbpath

    "/etc/opt/SUNWics5/config"

    service.http.ssl.port.enable

    "yes"

    service.http.ssl.port

    "443" (デフォルトの SSL ポート)


    注 –

    HTTP のデフォルトポートであるポート "80" ではありません。


    service.http.securesession

    "yes" (セッション全体を暗号化する)

    service.http.ssl.sourceurl

    "https://localhost:port" (ローカルホスト名、および service.http.ssl.port の値を入力)

    service.http.ssl.ssl3.ciphers

    "rsa_red_40_md5,

    rsa_rc2_40_md5,

    rsa_des_sha,

    rsa_rc4_128_md5,

    rsa_3des_sha"

    service.http.ssl.ssl3.sessiontimeout

    "0"

    service.http.sslusessl

    "yes"

  5. ファイルを ics.conf として保存します。

  6. 変更を適用するために Calendar Server を再起動します。

    cal-svr-base/SUNWics5/cal/sbin/start-cal

7.2 Calendar Server 6.3 ソフトウェアの SSL のトラブルシューティング

まず、復元不可能な問題の発生に備え、証明書データベースを必ず定期的にバックアップしてください。ここでは、データベースのバックアップの作成後に考慮するべき事項について説明します。

7.2.1 cshttpd プロセスのチェック

SSL が機能するには、Calendar Server の cshttpd プロセスが稼動している必要があります。cshttpd が稼動しているかどうかを確認するには、次のコマンドを実行します。

# ps -ef | grep cshttpd

7.2.2 証明書の検証

証明書データベースに格納されている証明書の一覧を表示し、その有効期限を確認するには、次のコマンドを実行します。

# ./certutil -L -d /etc/opt/SUNWics5/config

7.2.3 Calendar Server ログファイルの確認

SSL エラーについて、Calendar Server ログファイルを確認します。

7.2.4 SSL ポートへの接続

ブラウザに次の URL を指定し、SSL ポートに接続します。

https:// server-name:ssl-port-number

それぞれの意味は次のとおりです。

server-name は Calendar Server が稼動しているサーバーの名前です。

ssl-port-number は、ics.conf ファイルの service.http.ssl.port パラメータに指定されている SSL ポート番号です。デフォルトは 443 です。

7.2.5 cshttpd の標準 HTTP ポートでの待機を停止する方法

HTTP と HTTPS は別々のポート (SSL は 443、HTTP は 80) で待機するため、両方が同じポートで待機することはありません。現在、標準の HTTP ポートでの待機を停止するよう cshttpd に通知するための手段はありません。ただし、管理者が service.http.port を非公開の番号に変更することはできます。


注意 – 注意 –

cshttpd が HTTP で待機しないようにするために service.http.enable ="no" を設定することは避けてください。その設定を行うと、HTTPS も失敗する可能性があります。SSL を適切に設定するには、service.http.enable service.http.ssl.port.enable の両方を "yes" に設定する必要があります。