この章では、次に示すような、Oracle Identity Federationのセキュリティに関するトピックについて説明します。
サーバーでのキーストアの使用方法について
Oracle Identity Federationでは、署名と暗号化キーストアに対する1つのパスワードの構成のみサポートされ、そのパスワードを使用してキーストアと秘密鍵の両方を開きます。これは、キーストアが異なるストア・パスワードとキー・パスワードで構成されている場合、Oracle Identity Federationで秘密鍵にアクセスしようとすると、エラーになるということです。
このエラーを回避するには、構成されているキーの別名の秘密鍵パスワードをキーストア・パスワードと同じにします。
注意: Oracle Identity Federation 11gリリース1(11.1.1)では、キーストア・パスワードに合せてキー・パスワードを変更する場合、古いキーストアやウォレットを構成から削除する必要があります。 |
この項には、次の項目が含まれます。
この項では、Oracle WebLogic ServerでのSSLポートの構成方法、およびSSLを使用する場合のOracle Identity Federationの構成方法について説明します。
SSLを設定するOracle WebLogic ServerでSSLポートとキーストアを構成するには、次の手順を実行します。
Oracle WebLogic Server管理コンソールにログインし、「環境」→「サーバー」の順に移動します。
SSLを設定するサーバーを選択します。
「SSLリスニング・ポートの有効化」を選択して、SSLリスニング・ポート番号(443など)を入力します。
以降では、このポートを$SSL_PORT
と呼ぶことにします。
「保存」をクリックします。
「キーストア」タブに移動して、「ロックして編集」をクリックします。
「キーストア」で、カスタムIDを組み込むためのオプションを選択します。
「ID」セクションで、次のようにプロパティを入力します。
カスタムIDキーストア: location of keystore containing the SSL private key and certificate
カスタムIDキーストアのタイプ: jks
カスタムIDキーストアのパスフレーズ: storepassword
「保存」をクリックします。
「SSL」タブに移動します。
「ID」セクションで、次のようにプロパティを入力します。
秘密鍵の別名: keyalias
秘密鍵のパスフレーズ: keypassword
「保存」をクリックし、「変更のアクティブ化」をクリックします。
サーバーを再起動します。
SSLが正しく設定されていることを確認するために、https://
$HOSTNAME:$SSL_PORT
に移動すると、証明書が提示されます。この証明書を表示します。サブジェクトは、証明書の作成時に入力したcn
と一致している必要があります。
注意:
|
クライアントSSL証明書を要求するようにOracle WebLogic Serverを構成する場合は、次の手順を実行します。
Oracle WebLogic Server管理コンソールにログインし、「環境」→「サーバー」の順に移動します。
SSLを設定するサーバーを選択します。
「SSL」タブ→「詳細」の順に移動します。
プロパティ「相互クライアント証明書の動作」で、「クライアント証明書をリクエスト(強制する)」を選択します。
「保存」をクリックします。
「キーストア」タブに移動します。
「キーストア」で、構成する信頼キーストアのタイプのオプションを選択して、「信頼」セクションのフィールドに移入します。
「保存」をクリックし、「変更のアクティブ化」をクリックします。
サーバーを再起動します。
クライアント証明書を発行したCAを、Oracle WebLogic構成で指定した信頼キーストアにインポートする必要があります。Javaキーストアの場合は、次のコマンドを使用できます。
keytool -import -alias aliasfortrustedca -trustcacerts -file trustedcafile.pem -keystore keystorelocation -storepass truststorepassword
SSLリスニングポートを有効にし、サーバーおよび信頼できる証明書をそれぞれのキーストアにアップロードしている場合は、Oracle Identity FederationでSSLを使用するように構成する必要があります。
手順は次のとおりです。
Fusion Middleware Controlにログインし、Oracle Identity Federationインスタンスを見つけます。
「サーバー・プロパティ」に移動します。
ポート(および必要に応じてSOAPポート)を更新して、Oracle Weblogic Server管理コンソールで構成したSSLポートを反映させます。
「SSL有効」チェック・ボックスを選択します。
リクエストが非SSLポートで受信された場合にSSLの使用を強制するには、「強制SSL」ボックスを選択します。それ以外の場合は、チェックを外したままにします。
クライアント認証を強制するには、「クライアント証明書が必要」ボックスを選択します。それ以外の場合は、チェックを外したままにします。
「適用」をクリックします。
SSLを有効にした後で、メタデータを再生成して、ピア・プロバイダに再配布する必要があります。
注意:
|
Oracle Identity FederationをSSLクライアントとして構成して、リモートSSLサーバーに接続するには、次の2つの方法があります。
Oracle WebLogic Serverのキーストアをアイデンティティ・リポジトリおよび信頼リポジトリとして使用するようにOracle Identity Federationを設定します。このアプローチは、第8.1.2.1項「Oracle WebLogic Serverの構成」および第8.1.2.2項「Oracle Identity Federationでのキーストア・パスワードの構成」で説明します。
独自のアイデンティティ・リポジトリと信頼リポジトリを使用するようにOracle Identity Federationを設定します。このアプローチは、第8.1.2.3項「Oracle Identity FederationをSSLクライアントとして構成する別の方法」で説明します。
このセクションの内容は次のとおりです。
一部のSSLサーバーでは、SSLハンドシェイク時にクライアントの認証を実行する必要がある場合があります。通常、この操作は、SSLクライアントによるSSLクライアント証明書のSSLサーバーへの提示で実行されます。
この項では、SSLサーバーからリクエストされた際に、クライアントSSL証明書を提示するようにOracle WebLogic ServerとOracle Identity Federationを構成する方法について説明します。これには次の対応が必要です。
SSLサーバー証明書を発行したCAの信頼を設定します。
Oracle Identity Federation SSLクライアントの証明書を取得します。
これを実行するには、次の手順を実行します。
Oracle WebLogic Server管理コンソールにログインし、「環境」→「サーバー」の順に移動します。
SSLを設定するサーバーを選択します。
「キーストア」 タブに移動して、「ロックして編集」をクリックします。
「キーストア」で、構成するカスタムIDと信頼キーストアのタイプを含むオプションを選択します。
「ID」セクションで、次のようにプロパティを入力します。
カスタムIDキーストア: location of keystore with SSL private key and certificate
カスタムIDキーストアのタイプ: identity keystore type
カスタムIDキーストアのパスフレーズ: storepassword
「信頼」セクションで、信頼キーストアの情報をプロパティに入力します。
「保存」をクリックし、「変更のアクティブ化」をクリックします。
サーバーを再起動します。
Oracle Identity Federationがリモート・プロバイダに接続して、SSLクライアント証明書を提供する必要がある場合は、Oracle WebLogic ServerではなくOracle Identity Federationの設定で、アイデンティティ・キーストアおよび信頼キーストアのパスワードを構成する必要があります。手順は次のとおりです。
Fusion Middleware Controlにログインして、Oracle Identity Federationインスタンスに移動します。
「管理」→「サーバー・プロパティ」の順に移動します。
「SSL設定」の「アウトバウンド接続」セクションで、次の2つのプロパティの値を入力します。
WebLogic Serverのアイデンティティ・キーストアのパスワード - Oracle WebLogic Serverの構成で入力したアイデンティティ・キーストアのパスワードです。
WebLogic Serverのトラスト・キーストアのパスワード - Oracle WebLogic Serverの構成で入力した信頼キーストアのパスワードです。このプロパティを空白のままにした場合は、パスワードなしで信頼キーストアがオープンされます。
リモートSSLサーバーに接続する場合に、アイデンティティ・キーストアおよび信頼キーストアの情報をOracle WebLogic Serverの構成に入力しない場合は、別の方法でOracle Identity FederationをSSLクライアントとして構成できます。
このアプローチでは、Oracle Identity FederationのWLST
コマンドまたはMBeanを使用して、特定の構成プロパティを設定する必要があります。また、資格証明ストアでキーストア・パスワードを入力する必要があります。
次の5つの「serverconfig」プロパティを次の値に設定する必要があります。
usewlssslconfig - false
clientsslkeystoreloc - アイデンティティ・キーストアのパスとファイル名です。パスにはドメイン・ホームからの絶対パスまたは相対パスを指定できます。
clientsslkeystoretype - アイデンティティ・キーストアのタイプです。タイプを指定しない場合はJKSとみなされます。
clientssltruststoreloc - 信頼キーストアのパスとファイル名です。パスにはドメイン・ホームからの絶対パスまたは相対パスを指定できます。
clientssltruststoretype - 信頼キーストアのタイプです。タイプを指定しない場合はJKSとみなされます。
例: WLSTコマンドの使用
setConfigProperty('serverconfig', 'usewlssslconfig', 'false', 'BOOLEAN') setConfigProperty('serverconfig', 'clientsslkeystoreloc', '/usr/local/ssl/keystore', 'STRING') setConfigProperty('serverconfig', 'clientsslkeystoretype', 'JKS', 'STRING') setConfigProperty('serverconfig', 'clientssltruststoreloc', '/usr/local/ssl/truststore', 'STRING') setConfigProperty('serverconfig', 'clientssltruststoretype', 'JKS', 'STRING')
WLSTコマンドの使用方法の詳細は、第9章「Oracle Identity Federationコマンドライン・ツール」
を参照してください。
例: MBeanの使用
「serverconfig」という名前のConfigMXBeanで、次の引数を指定して「putProperty」処理を5回呼び出します。
プロパティ名 | プロパティ値 | プロパティ・タイプ |
---|---|---|
usewlssslconfig | false | BOOLEAN |
clientsslkeystoreloc | /usr/local/ssl/keystore | STRING |
clientsslkeystoretype | JKS | STRING |
clientssltruststoreloc | /usr/local/ssl/keystore | STRING |
clientssltruststoretype | JKS | STRING |
詳細は、付録A「Oracle Identity Federation MBean」を参照してください。
アイデンティティ・キーストアおよび信頼キーストアのパスワードは、資格証明ストアに格納する必要があります。資格証明ストアに格納するこれらのパスワードの鍵は次のとおりです。
clientsslkeystorepwd - アイデンティティ・キーストアのパスワードです。
clientssltruststorepwd - 信頼キーストアのパスワードです。
次の例では、WLST
コマンドを使用して、これらのパスワードを資格証明ストアで作成および更新する方法を示します。この例では、Oracle Identity Federationが「OIF」という名前のアプリケーションでデプロイされていることを前提にしています。アイデンティティ・キーストアおよび信頼キーストアのパスワードはいずれも「mypassword」です。
キーストア資格証明を作成するには、次のようにします。
createCred(map="OIF", key="clientsslkeystorepwd", user="UniqueUserNameCredential", password="mypassword", desc="identity keystore pwd") createCred(map="OIF", key="clientssltruststorepwd", user="UniqueUserNameCredential", password="mypassword", desc="trust keystore pwd")
キーストア資格証明を更新するには、次のようにします。
updateCred(map="OIF", key="clientsslkeystorepwd", user="UniqueUserNameCredential", password="mypassword", desc="identity keystore pwd") updateCred(map="OIF", key="clientssltruststorepwd", user="UniqueUserNameCredential", password="mypassword", desc="trust keystore pwd")
詳細は、第4.5項「Oracle Identity Federationの資格証明の管理」を参照してください。
Oracle Identity FederationがSSLを使用してLDAPサーバーに接続する必要がある場合、まずOracle WebLogic Server管理コンソールで信頼キーストアにLDAPのCA証明書を追加する必要があります。この情報は、Oracle Identity Federationが実行されている管理対象サーバーのサーバー/キーストア構成画面に表示されます。
また、Oracle Identity Federationの構成で信頼キーストアのパスワードを入力する必要があります(第8.1.2.1項「Oracle WebLogic Serverの構成」および第8.1.2.2項「Oracle Identity Federationでのキーストア・パスワードの構成」を参照)。
注意:
|
SSL経由でLDAPサーバーを検索する場合
ユーザー・データ・ストアまたはフェデレーション・データ・ストアがSSLを使用するLDAPサーバーにあり、Fusion Middleware Control(「管理」→「アイデンティティ」)で検索処理を使用する場合は、LDAPのCA証明書をJVMの cacert
キーストアにインポートする必要があります。
検索処理を実行すると、ログに次のようなエラーが表示されます。
SEVERE: NamingException: error while interacting with an LDAP server or JNDI module javax.naming.NameNotFoundException: remaining name: env/jmx/runtime
これは予期されているもので、検索には影響しません。
管理サーバーと、Oracle Identity Federationをホストする管理対象サーバーに対してSSLを有効にした後、Fusion Middleware Controlで引き続きOracle Identity Federationサーバーを管理できることを確認する必要があります。
Fusion Middleware ControlでOracle Identity Federationサーバー・ターゲットを管理できるようにするには、次の手順を実行します。
$INSTANCE_HOME/EMAGENT/EMAGENT/sysman/emd/targets.xmlを探します。
'serviceURL'プロパティのプロトコルを正しいプロトコルに変更します。Oracle Identity Federationターゲットが(ホストとoracle_emd以外に)複数ある場合は、各ターゲットの'serviceURL'を変更する必要があります。
$INSTANCE_HOME/EMAGENT/EMAGENT/sysman/config/emd.propertiesを探します。
必要に応じて、'REPOSITORY_URL'のプロトコルを正しいプロトコルに更新します。EMエージェントは、このプロパティを使用してFusion Middleware Controlに接続します。
次のコマンドを使用してEMエージェントを停止します。
$INSTANCE_HOME/bin/opmnctl stopproc ias-component=EMAGNET
次のコマンドを使用してEMエージェントを保護します。
$INSTANCE_HOME/EMAGENT/EMAGENT/bin/emctl secure fmagent -admin_host <host> -admin_port <port> -admin_user <username> [-admin_pwd <pwd>]
次のコマンドを使用してEMエージェントを再起動します。
$INSTANCE_HOME/bin/opmnctl startproc ias-component=EMAGNET
このトピックの詳細は、第6.4.3項を参照してください。
Oracle Identity Federationには、署名ウォレットおよび暗号化ウォレットを、サービスを中断することなくスムーズに更新するための方法が用意されています。
署名または暗号化ウォレットを置き換えて新しいウォレットをアップロードする必要がある場合、Oracle Identity Federationによって古いウォレットが保存されます。その後サーバーは、古いウォレットが削除されるまで、そのウォレットを引き続き使用します。ただし、生成されるメタデータには新しいウォレットの情報と古いウォレットの情報が含まれます。そのため、変更についてリモート・プロバイダに通知するための時間を取ることができます。
新しいメタデータを作成し、すべてのリモート・プロバイダに配布したら、古いウォレットを削除できます。それ以降、Oracle Identity Federationはすべてのトランザクションで新しくアップロードされたウォレットを使用します。
この項は次のトピックで構成されています。
11gリリース1(11.1.1)パッチ・セット3の時点では、キーストア(署名鍵)のパスワードと暗号化鍵のパスワードを同一にする必要はありません。パスワードの扱い方は次のとおりです。
ストア・パスワードとキー・パスワードを個別に構成できます。
構成しない場合、キー・パスワードはストア・パスワードと同一であるとみなされます。
関連項目: 『Oracle Fusion Middleware管理者ガイド』のキーストア、ウォレットおよび証明書の管理に関する項を参照してください。 |
署名ウォレットまたは暗号化ウォレットを置き換える場合は、次の手順に従います。
新しいウォレットをアップロードします。
Fusion Middleware Controlにログインして、Oracle Identity Federationインスタンスに移動します。
「管理」→「セキュリティおよび信頼」の順に移動します。
「ウォレット」タブで、「更新」をクリックします。
更新するウォレットの「更新」チェック・ボックスを選択します。
キーストアのタイプ、ウォレットの場所、パスワードおよび別名を選択します。
「OK」をクリックします。
新しいメタデータを生成し、配布します。
Fusion Middleware Controlにログインして、Oracle Identity Federationインスタンスに移動します。
「管理」→「セキュリティおよび信頼」の順に移動します。
「プロバイダ・メタデータ」タブの「メタデータの生成」セクションで、プロバイダのタイプと生成するメタデータのプロトコルを選択して、「生成」をクリックします。
生成されたメタデータを保存します。
生成されたメタデータをすべてのリモート・ピア・プロバイダに配布します。
古いウォレットを削除します。
Fusion Middleware Controlにログインして、Oracle Identity Federationインスタンスに移動します。
「管理」→「セキュリティおよび信頼」の順に移動します。
「ウォレット」タブで、「更新」をクリックします。
更新したウォレットで、古いウォレットの削除をクリックします。
Oracle Identity Federationはデフォルトで、暗号化/復号化処理に対してXML暗号化などの低強度の暗号鍵サイズをサポートしています。
AES-256などの強固な対称暗号化アルゴリズムを使用するには、JVMを変更してJava Cryptography Extension (JCE) Unlimited Strength Jurisdictionポリシーを組み込む必要があります。
次の手順を実行します。
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Filesを次のURLからダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
$BEA_HOME
の下にあるすべての$JAVA_HOME/jre/lib/security
ディレクトリでファイルを解凍します(これらのディレクトリを検索するには、US_export_policy.jar
ファイルを探します)。それぞれの$JAVA_HOME/jre/lib/security
ディレクトリで、デフォルトの低強度のlocal_policy.jar
ファイルとUS_export_policy.jar
ファイルをOracleが提供するファイルで上書きします。
管理サーバーおよびOracle Identity Federationが実行されている管理対象サーバーを再起動します。