この節では、Calendar Server に SSL を設定するための手順について説明します。
ここでは、次の内容について説明します。
ゲートウェイがクライアントに公開鍵を送信するには、証明書が必要になります。証明書には、ゲートウェイの公開鍵、ゲートウェイの証明書に関連付けられた識別名、証明書のシリアル番号または発行日、および証明書の有効期限が含まれています。証明書は、ゲートウェイの ID を検証する証明書発行局 (CA) で発行されます。CA とは、1 人以上のユーザーによって信頼されている証明書発行局で、X.509 公開鍵証明書および CARL、または証明書失効リスト (CRL) を発行および管理します。CA は、公開鍵インフラストラクチャー (PKI) の基礎的な構成要素です。一方、PKI とは証明書および公開鍵と秘密鍵のペアを管理するために使用される一連のポリシー、プロセス、サーバープラットフォーム、ソフトウェア、およびワークステーションであり、公開鍵証明書の発行、管理、失効を行います。
CA はすべての証明書にその名前を挿入し、CRL は秘密鍵を用いて証明書を生成し、デジタル署名を付加します。CA が信頼されていることを確認すると (直接、または証明パスを通じて)、その CA によって発行される証明書を信頼できます。名前を照合すると、CA によって発行された証明書を簡単に識別できます。ただし、公開鍵を使用して証明書が有効であることを確認することができます。
CA は、次の 4 つの基本的な PKI の機能を実行します。
証明書の発行 (作成と署名)。
証明書状態情報の維持、および CRL の発行。
現在の (失効していない) 証明書と CRL のパブリッシュ。
失効した証明書に関する状態情報のアーカイブの維持。
サーバーの証明書とキーのペアは、そのサーバーの識別情報を示します。これらは、サーバー内部または取り外し可能な外部のハードウェアカード (スマートカード) の証明書データベース内に保存されます。Calendar Server に SSL を実装するには、証明書データベースが必要です。証明書データベースには、CA (証明書発行局) と Calendar Server の証明書を定義する必要があります。ここでは、概念的な情報と、作業に関する情報を提供します。
証明書データベースを作成する前に、次のことを把握しておいてください。
Mozilla ツール
このリリースには次の Mozilla ツールが用意されています。
証明書データベースツール (certutil): 証明書データベースを作成、管理します。詳細は、次の Web サイトを参照してください。
http://mozilla.org/projects/security/pki/nss/tools/certutil.html
証明書データベースの生成を試みる前に、ツールの構文に慣れておいてください。
セキュリティーモジュールデータベースツール (modutil): 使用できるセキュリティーモジュールに関する情報を表示します。詳細は、次の Web サイトを参照してください。
http://mozilla.org/projects/security/pki/nss/tools/modutil.html
これらのユーティリティーは、次のディレクトリに格納されています。
/opt/SUNWics5/cal/lib
または、最新バージョンを Web サイトからダウンロードしてください。
ライブラリパス変数
Mozilla ツールを使用するには、事前に LD_LIBRARY_PATH 変数を適切に設定する必要があります。次に例を示します。
setenv LD_LIBRARY_PATH /opt/SUNWics5/cal/lib
例で使用するファイルとディレクトリ
この章で紹介する例は、次のファイルとディレクトリを使用します。
/etc/opt/SUNWics5/config は、証明書データベースを格納したディレクトリです。
証明書データベースのバックアップを定期的に作成します。別のディレクトリに証明書データベースを作成することも可能です。その場合は、同じディレクトリに証明書パスワードファイルを置く必要があります。
sslpassword.conf は、証明書データベースのパスワードを記録したテキストファイルです。
これは certutil ユーティリティーが使用するファイルで、Calendar Server は使用しません。次のディレクトリに sslpassword.conf を作成します。
/etc/opt/SUNWics5/config
/etc/passwd には、乱数生成用のエントロピーが用意されています。つまり、このディレクトリは、乱数生成機能が真にランダムな結果を確実に生成するのに役立つ、有効で一意なシードを生成するために使用されます。
スーパーユーザー (root) としてログインするか、スーパーユーザーになります。
/etc/opt/SUNWics5/config/sslpassword.conf に証明書データベースのパスワードを指定します。
次に例を示します。
# echo "password file entry" /etc/opt/SUNWics5/config/sslpassword.conf |
password file entry の形式は次のとおりです。
Internal (Software) Token: password
証明書データベースのディレクトリを作成します。次に例を示します。
# cd /var/opt/SUNWics5 # mkdir alias |
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 オプションを付けてユーティリティーを実行することは避けてください。
デフォルトの自己署名ルート 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 |
ホスト用の証明書を生成します。次に例を示します。
# ./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 は、サーバーホスト名です。
証明書を検証します。次に例を示します。
# ./certutil -V -u V -n SampleRootCA -d /etc/opt/SUNWics5/config # ./certutil -V -u V -n SampleSSLServerCert -d /etc/opt/SUNWics5/config |
証明書をリスト表示します。次に例を示します。
# ./certutil -L -d /etc/opt/SUNWics5/config # ./certutil -L -n SampleSSLServerCert -d /etc/opt/SUNWics5/config |
modutil を使用して、使用できるセキュリティーモジュール (secmod.db) をリスト表示します。次に例を示します。
# ./modutil -list -dbdir /etc/opt/SUNWics5/config |
alias ファイルの所有者を icsuser と icsgroup (または Calendar Server を実行するそれ以外のユーザーとグループの ID) に変更します。次に例を示します。
# find /etc/opt/SUNWics5/config -exec chown icsuser {}; # find /etc/opt/SUNWics5/config -exec chgrp icsgroup {}; |
自己署名付き証明書は、ゲートウェイ固有の秘密鍵で署名されています。自己署名付き証明書は安全ではありませんが、証明書付き証明書が利用可能になる前に証明書を必要とするテストアプリケーションで使用できます。自己署名付き証明書は、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
次の手順で、証明書要求の生成、PKI (Public Key Infrastructure) の Web サイトへの要求の送信、証明書のインポートを行う方法について説明します。これらの手順では、証明書データベースが config ディレクトリに配置されていることを前提としています。
証明書データベースとパスワードファイルは、両方とも同じディレクトリに常駐する必要があります。ここで示すデフォルトは config ディレクトリですが、別のディレクトリを選択することもできます。その場合は、このあとの手順を実行して別のパスパラメータを設定する必要があります。
スーパーユーザー (root) としてログインします。
bin ディレクトリに移動します。
# cd /opt/SUNWics5/cal/bin
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” はサーバーホスト名です。
SSL Web サーバー用のテスト証明書を CA (証明書発行局) または PKI (Public Key Infrastructure) の Web サイトに要求します。hostnameCert.req ファイルの内容をコピーして証明書要求に貼り付けます。
証明書への署名が完了し、準備が整った時点で通知が送信されてきます。
証明書発行局証明書チェーンと SSL サーバー証明書をテキストファイルにコピーします。
認証局証明書チェーンを証明書データベースにインポートし、認証チェーンを確立します。次に例を示します。
# ./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 |
署名された 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 |
証明書データベース内の証明書をリスト表示します。
# ./certutil -L -d /etc/opt/SUNWics5/config
ics.conf ファイルで、署名された SSL サーバー証明書の SSL サーバーニックネームを設定します。例: “hostname SSL Server Test Cert”
注: ics.conf ファイルの service.http.calendarhostname パラメータと service.http.ssl.sourceurl パラメータのホスト名は、SSL 証明書のホスト名と一致する必要があります (システムに複数のエイリアスがある場合)。例: calendar.sesta.com
Calendar Server に SSL を実装するには、ics.conf ファイルの特定のパラメータを設定する必要があります。次の表に示されているパラメータのいずれかが ics.conf ファイルにない場合、指定した値とともにファイルに追加します。システムの起動時 (start-cal の実行時) に ics.conf が読み取り専用の場合、新しい値は Calendar Server が再起動されるまで反映されません。SSL パラメータの説明については、「E.2.10 Calendar Server SSL 構成パラメータ」を参照してください。
設定を変更する権限を持つ管理者としてログインします。
/etc/opt/SUNWics5/cal/config ディレクトリに移動します。
古い ics.conf ファイルをコピーして名前を変更し、保存します。
次の表に示すパラメータを 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" |
ファイルを ics.conf として保存します。
変更を適用するために Calendar Server を再起動します。
cal-svr-base/SUNWics5/cal/sbin/start-cal