ロードバランサを設定して SSL 要求を処理できるようにする前に、まず、Access Manger Web コンテナの SSL を設定します。手順については、『Sun Java System Access Manager 7 2005Q4 管理ガイド』の第 3 章「Access Manager を SSL モードに設定する」を参照してください。
ロードバランサと Access Manager サーバー用に SSL を設定するには、次の場合につ いて考慮してください。
ロードバランサのみの SSL 設定: SSL ターミネーション。
ロードバランサがクライアントからの SSL 接続を終了し、Access Manager サーバーへの別の SSL 接続を作成します。
Access Manager サーバーのみの SSL 設定: SSL パススルー。
ロードバランサがクライアントからのすべての要求を Access Manager サーバーにバイパスします。
ロードバランサと Access Manager サーバー両方の SSL 設定。
SSL パススルー設定を除き、標準のサーバー証明書を使用してロードバランサの SSL ターミネーションを有効にすることができます。ただし、ロードバランサと Access Manager サーバー用に SSL パススルーを設定し、ロードバランサがクライアントから Access Manager サーバーへのすべての要求をバイパスする場合は、標準のサーバー証明書では SSL に関する次の問題が発生します。
クライアントがロードバランサ経由で Access Manager サーバーにアクセスした場合、クライアントは Access Manager サーバーからサーバー証明書を取得します。ロードバランサは SSL サーバー証明書を持たず、クライアント要求をバックエンド Access Manager サーバーにバイパスするだけです。その場合、クライアントは、サーバー証明書のホスト名と対象名が異なっているという警告メッセージを受け取ります。
上記の問題を回避するには、ロードバランサ名の SubjectDN を使用してサーバー証明書をインストールします。ただし、2 台の Access Manager サーバー間のセッション検証で問題が発生します。
たとえば、あるユーザーが amserver1 からセッションを取得し、同じユーザーの 2 番目の要求が amserver2 に送信されると、amserver2 では amserver1 に対するユーザーセッションを検証する必要があります。amserver2 がセッション検証要求を amserver1 に送信する場合は、amserver1 への SSL 接続を作成し、次に amserver1 からロードバランサの SubjectDN 付きのサーバー証明書を取得します。この 2 つの名前 (amserver1 のホスト名と証明書の subjectDN) が異なるため、amserver2 は SSL ハンドシェークを停止し、セッション検証は失敗します。
これらの問題を解決するために、Access Manager には次のプロパティーが用意されています。
com.iplanet.am.jssproxy.trustAllServerCerts
このプロパティーが有効 (true) になっていると、Access Manager は証明書に関連した問題 (ファイル名の競合など) をすべて無視し、SSL ハンドシェークを継続します。
発生の可能性があるセキュリティー上のリスクを回避するために、このプロパティーを有効にするのは、テストを目的とする場合、または企業ネットワークが厳重に管理されている場合だけにしてください。セキュリティー上のリスクが発生する可能性がある場合 (たとえば、サーバーが別のネットワークのサーバーに接続されている場合) は、このプロパティーを有効にしないでください。
com.iplanet.am.jssproxy.SSLTrustHostList
このプロパティーが有効 (true) になっていると、Access Manager は AMConfig.properties ファイルのプラットフォームサーバーリストをチェックします。サーバーリスト内の2 つのサーバーのサーバー FQDN が一致すると、Access Manager は SSL ハンドシェークを継続します。
com.iplanet.am.jssproxy.checkSubjectAltName
このプロパティーが有効 (true) になっており、かつサーバー証明書に対象別名 (SubjectAltName) 拡張機能が含まれていると、Access Manager は、この拡張機能内のすべての名前エントリをチェックします。サーバー FQDN と同じ名前が SubjectAltName 拡張機能内に 1 つもない場合、Access Manager は SSL ハンドシェークを継続します。このプロパティーの使用は、com.iplanet.am.jssproxy.trustAllServerCerts プロパティーを有効にする場合より安全です。公開鍵基盤 (PKIX) の定義では、SubjectAltName 拡張機能を使用して証明書に複数の対象名を含めることができます。
このプロパティーを有効にするには、信頼される FQDN をカンマで区切ったリストで指定します。次に例を示します。
com.iplanet.am.jssproxy.checkSubjectAltName= amserv1.example.com,amserv2.example.com
SubjectAltName 拡張機能を使用した証明書の取得については、次の節を参照してください。
SubjectAltName 拡張機能を使用して証明書署名要求 (CSR) を生成するには、証明書データベースツール (certutil) を使用します。certutil が /usr/sfw/bin ディレクトリにない場合、まず、Solaris システムの場合は SUNWtlsu パッケージを、Linux システムの場合は sun-nss-sun-nss-devel RPM をインストールします。必要に応じて、 LD_LIBRARY_PATH 環境変数に、適切な certutil のパスを設定します。
certutil については、次のサイトを参照してください。http://www.mozilla.org/
ここでは、Web コンテナとして Web Server または Application Server を使用している場合の certutil の使用方法について説明します。Web コンテナとして BEA WebLogic Server または IBM WebSphere Application Server を使用している場合は、それぞれの BEA または IBM 製品のマニュアルを参照してください。
SubjectAltName 拡張機能を使用して CSR を生成するには、次の手順に従います。
スーパーユーザー (root) としてログインするか、スーパーユーザーになります。
certutil -N オプションを使用して、新しい証明書データベース (cert8.db) を作成します。必要に応じて、最初に、データベース用のディレクトリを作成します。次に例を示します。
# mkdir certdbdir # cd certdbdir # certutil -N -d .
certutil から入力を求められたら、鍵を暗号化するためのパスワードを入力します。
Enter a password which will be used to encrypt your keys. The password should be at least 8 characters long, and should contain at least one non-alphabetic character. Enter new password: your-password Re-enter password: your-password
SubjectAltName 拡張機能を使用して CSR を生成します。次に例を示します。
# certutil -R -s "cn=lb.example.com,o=example.com,c=us" -o server.req -d . -a -8 amserv1.example.com,amserv2.example.com
certutil から入力を求められたら、パスワード (または pin) を入力し、次にランダムシードを生成するための鍵を入力して鍵を作成します。
Enter Password or Pin for "NSS Certificate DB": your-password A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full: |************************************************************| Finished. Press enter to continue: Generating key. This may take a few moments...
CSR (この例では server.req ファイル) を認証局 (CA) に送信します。サーバー証明書を取得し、certutil -A オプションを使用して、それを証明書データベースに追加します。
証明書データベース (cert8.db) を Web コンテナのディレクトリにコピーします。
Web Server。cert8.db および key3.db データベースを /opt/SUNWwbsrv/alias ディレクトリにコピーし、Web Server インスタンスの名前を使用してその名前を変更します。次に例を示します。
https-webserver.example.com-webserver-cert8.db https-webserver.example.com-webserver-key3.db
Application Server。cert8.db および key3.db データベースをインスタンスの /config ディレクトリにコピーします。次に例を示します。
/var/opt/SUNWappserver/domains/domain1/config/cert8.db /var/opt/SUNWappserver/domains/domain1/config/key3.db