ロードバランサは、複数サーバー配備の環境で、クライアント要求を複数の Access Manager インスタンスに分散します。この節の情報を利用する前に、「サイトとしての Access Manager 配備の設定」の説明に従って Access Manager 配備をサイトとして設定してください。1 つのサイトには、異なるホストサーバーにインストールされた、Access Manager の複数 (2 つ以上) のインスタンスが含まれます。すべての Access Manager インスタンスが 同じ Directory Server にアクセスし、同じパスワード暗号化鍵を使用する必要があります。Access Manager のインストールについては、「複数のホストサーバーへの Access Manager のインストール」を参照してください。
この節には、ロードバランサの使用法に関する次の情報が含まれています。
ロードバランサを設定して 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
Access Manager をロードバランサ Cookie 用に設定するには、配備内のすべての Access Manager インスタンスの設定を更新して、インスタンスがロードバランサを認識できるようにします。このシナリオでは、異なるホストサーバーに複数 (2 つ以上) の Access Manager インスタンスが配備されています。ロードバランサが、クライアント要求をさまざまな Access Manager インスタンスに経路指定します。すべての Access Manager インスタンスが、同じ Directory Server を使用します。
Access Manager コンソールで、「サイトとしての Access Manager 配備の設定」の説明に従って Access Manager 配備をサイトとして設定します。配備をサイトとして設定すると、Access Manager はロードバランサを含むようにメモリー内の fqdnMap プロパティーを自動的に設定します。
各 Access Manager の AMConfig.properties ファイルに次のプロパティーを追加します。
com.iplanet.am.lbcookie.name=amlbcookie com.iplanet.am.lbcookie.value=amserver
amlbcookie はロードバランサの Cookie で、amserver はそのインスタンスで使われる Access Manager ホストサーバーの名前です。
各 Web コンテナを再起動することによって、すべての Access Manager インスタンスを再起動します。
このシナリオでは、Access Manager サイトがロードバランサを使用してクライアント要求をさまざまな Access Manager インスタンスに分散しており、サイトには SAML (Security Assertions Markup Language) サービスが実装されています。要求がロードバランサ経由で Access Manager インスタンスに送信された場合、そのインスタンスが SAML 表明を取得するには、配備内のほかのどの Access Manager サーバーによって元の表明またはアーティファクトが発行されたかを認識する必要があります。
まず、配備がサイトとして設定されていることが必要です。ホストサーバーには複数の Access Manager インスタンスがインストールされており、ロードバランサがクライアント要求をさまざまなインスタンスに経路指定します。すべての Access Manager インスタンスが、同じ Directory Server にアクセスします。Access Manager セッションフェイルオーバーはオプションです。
SAML でロードバランサを使用するようにサイトを設定するには、次の手順に従います。
SAML ロードバランスが機能するには、Access Manager 配備がサイトとして設定されていることが必要です。Access Manager 配備をサイトとして設定していない場合は、「サイトとしての Access Manager 配備の設定」の手順に従います。
amadmin として Access Manager コンソールにログインします。
Access Manager コンソールで、「連携」、次に「SAML」をクリックします。
「プロパティー」セクションの「SAML プロファイル」で、次のエントリを追加または変更します。
サイト ID。配備内の各 Access Manager インスタンスを追加します。すべての Access Manager インスタンスが、同じ「サイト ID とサイト発行者名」を共有する必要があります。
信頼パートナー。パートナーの配備サイトの「ソース ID」(サイト ID)、「発行者名」、および「ホストリスト」を追加します。Access Manager サーバーの一意の「ソース ID」(サイト ID) と「発行者名」、およびロードバランサの URL 、IP アドレス、またはホスト名によって配備が識別され、これらの情報が設定のためにパートナーのサイトに送信されます。
これらのフィールドの詳細については、『Sun Java System Access Manager 7 2005Q4 Federation and SAML Administration Guide』を参照してください。
「保存」をクリックして変更を保存します。
Access Manager 配備をサイトとして設定した場合は、Access Manager によってメモリー内の fqdnMap プロパティーがロードバランサを含むように自動的に設定されるため、AMConfig.properties ファイルでこのプロパティーを設定する必要はありません。ただし、次の Access Manager 配備の場合は、このプロパティーを明示的に設定 する必要があります。
配備がサイトとして設定されていない場合。
配備に、物理ホストにマップされた仮想ホストが含まれている場合。
fqdnMap プロパティーを設定する必要がある場合は、配備内の各 Access Manager インスタンスの AMConfig.properties ファイルで、このプロパティーをロードバランサに設定します。必要に応じて、最初に、このプロパティーのコメント文字 (#) を削除します。 次に例を示します。
com.sun.identity.server.fqdnMap[lb.example.com]=lb.example.com
ロードバランサ経由で Access Manager インスタンスにアクセスする方法は、モード (レルムまたは旧バージョン) と、アクセスするコンソールによって異なります。ロードバランサ経由で Access Manager インスタンスにアクセスするには、次の構文を使用します。
http://loadbalancer.domain:port/amserver/console|/amconsole
旧バージョンモードでは、次の両方のコンソールにアクセスできます。
新しい Access Manager 7 2005Q4 コンソール。次に例を示します。
http://loadbalancer.example.com:80/amserver/console
Access Manager 6 2005Q1 コンソール。次に例を示します。
http://loadbalancer.example.com:80/amconsole
レルムモードでは、新しい Access Manager 7 2005Q4 コンソールにのみアクセスできます。次に例を示します。
http://loadbalancer.example.com:80/amserver/console