ヘッダーをスキップ

Oracle Containers for J2EE セキュリティ・ガイド
10g(10.1.3.4.0)

B50832-01
目次
目次
索引
索引

戻る 次へ

19 Common Secure Interoperabilityプロトコル

OC4Jでは、Common Secure Interoperability Version 2プロトコル(CSIv2)がサポートされます。CSIv2は、認可とアイデンティティの委任をサポートするセキュアで相互運用可能なワイヤ・プロトコルに関するObject Management Group(OMG)規格で、EJBとともに使用することができます。

CSIv2では、様々な準拠レベルが指定されています。OC4Jは、準拠レベル0を必要とするEJB仕様に準拠しています。

CSIv2構成には、次の3つのファイルが関係します。

この章の構成は次のとおりです。

internal-settings.xml内のCSIv2セキュリティ・プロパティ(EJBサーバー)

internal-settings.xmlファイルで、<sep-property>要素内の属性値を使用してCSIv2のサーバー・セキュリティ・プロパティを指定します。

表19-1はプロパティのリストです。この表では、鍵と証明書の格納に使用するキーストアとトラストストアの各ファイルについて言及しています。各ファイルには、JDK仕様の形式であるJava Key Store(JKS)が使用されます。キーストアには、秘密鍵と証明書のマップが格納されます。トラストストアには、認証局(CA。VeriSign社およびThawte社など)の信頼できる証明書が格納されます。

表19-1    EJBサーバーのセキュリティ・プロパティ 
プロパティ  説明 

port 

IIOPポート番号(デフォルトは5555)。 

ssl 

trueの設定は、IIOP/SSLをサポートすることを指定します。 

ssl-port 

IIOP/SSLポート番号(デフォルトは5556)。このポートは、サーバー・サイド認証専用です。アプリケーションでクライアントおよびサーバー認証を使用する場合は、ssl-client-server-auth-portも設定する必要があります。 

ssl-client-server-auth-port 

クライアントおよびサーバー認証に使用されるポート(デフォルトは5557)。これは、OC4Jによりクライアントとサーバー両方の認証に必要なSSL接続がリスニングされるポートです。このプロパティを設定しないと、OC4Jではクライアント・サイド認証がssl-port + 1でリスニングされます。 

keystore 

キーストアの名前とパス(ssltrueの場合にのみ使用)。絶対パスが推奨されます。 

keystore-password 

キーストアのパスワード(ssltrueの場合にのみ使用)。 

trusted-clients 

アイデンティティ・アサーションを信頼できるホストのカンマ区切りのリスト。このリストの各エントリには、IPアドレス、ホスト名、ホスト名のパターン(たとえば*.example.com)、または**のみの場合は、すべてのクライアントが信頼できることを示す)を指定できます。デフォルトでは、信頼できるクライアントはありません。 

truststore 

トラストストアの名前とパス。絶対パスが推奨されます。サーバーのトラストストアを指定しないと、OC4Jではトラストストアとしてキーストアが使用されます(ssltrueの場合にのみ使用)。 

truststore-password 

トラストストアのパスワード(ssltrueの場合にのみ使用)。 

OC4JでCSIv2プロトコルを使用するには、ssltrueに設定してIIOP/SSLポート(ssl-port)を指定する必要があります。次の点に注意してください。

サーバー上でIIOP/SSLが有効化されている場合、OC4Jは2つの異なるソケットでリスニングします。一方はサーバー認証専用で、他方はサーバーおよびクライアント認証用です。<sep-property>要素内にサーバー認証ポート番号を指定します。OC4Jでは、サーバーおよびクライアント認証ポート番号用にこれに1が加算されます。

サーバー認証のみを使用するSSLクライアントの場合は、次のいずれかを指定できます。

キーストアもトラストストアも指定しないと、セキュリティ・プロバイダによりデフォルトのトラストストアが設定されていない場合にハンドシェイクが失敗する可能性があります。

クライアント認証を使用するSSLクライアントは、キーストアとトラストストアの両方を指定する必要があります。クライアント認証には、キーストアからの証明書が使用されます。

次の例に、一般的なinternal-settings.xmlファイルを示します。

<server-extension-provider name="IIOP"
        class="com.oracle.iiop.server.IIOPServerExtensionProvider">
    <sep-property name="port" value="5555" />
    <sep-property name="host" value="localhost" />
    <sep-property name="ssl" value="true" />
    <sep-property name="ssl-port" value="5556" />
    <sep-property name="ssl-client-server-auth-port" value="5557" />
    <sep-property name="keystore" value="keystore.jks" />
    <sep-property name="keystore-password" value="123456" />
    <sep-property name="truststore" value="truststore.jks" />
    <sep-property name="truststore-password" value="123456" />
    <sep-property name="trusted-clients" value="*" />
</server-extension-provider>


注意

  • internal-settings.xmlはApplication Server Controlでは更新できません。

  • ここでportのデフォルト値はssl-portのデフォルト値より小さい値ですが、この関係は必須ではありません。

  • OC4JがOracle Application Server環境でOracle Process Manager and Notification Server(OPMN)により起動されると、internal-settings.xmlファイルに指定したポートは上書きされます。IIOP SSLポートは、キーストアの場所、トラストストアの場所またはパスワードが存在しないか、間違っている場合、起動に失敗する可能性があります。この場合、該当するOPMNのログ・ファイルを確認し、失敗の正確な原因を調査してください。

  • OPMNが特定のOC4Jインスタンスに対してIIOPを無効にするように構成されている場合は、internal-settings.xmlでIIOPを有効化する設定が無効になります。(OPMNを介したIIOPの有効化と無効化の詳細は、『Oracle Containers for J2EEサービス・ガイド』のRMIに関する章を参照してください。)

  • キーストアとトラストストアの設定は、スタンドアロンOC4Jと完全なOracle Application Server環境の両方についてinternal-settings.xmlでサポートされます。Oracle Application Serverでは、これらの値を設定するOPMNオプションが存在しないため、手動で構成する必要があります。

 

次にinternal-settings.xmlのDTDを示します。

<!-- A server extension provider that is to be plugged in to the server. --> 
<!ELEMENT server-extension-provider (sep-property*) (#PCDATA)> 
<!ATTLIST server-extension-provider name class CDATA #IMPLIED>
<!ELEMENT sep-property (#PCDATA)> 
<!ATTLIST sep-property name value CDATA #IMPLIED>
<!-- This file contains internal server configuration settings. --> 
<!ELEMENT internal-settings (server-extension-provider*)>

ejb_sec.properties内のCSIv2セキュリティ・プロパティ(EJBクライアント)

クライアントには、サーバー内で実行されるかどうかに関係なく、EJBセキュリティ・プロパティがあります。次の表19-2に、ejb_sec.propertiesファイルにより制御されるEJBクライアントのセキュリティ・プロパティを示します。デフォルトでは、OC4Jは、クライアントとして実行される場合はこのファイルを現行のディレクトリ内で検索し、サーバー内で実行される場合はORACLE_HOME/j2ee/home/config内で検索します。システム・プロパティ設定-Dejb_sec_properties_location=pathnameを使用して、このファイルの場所を明示的に指定できます。

表19-2    EJBクライアントのセキュリティ・プロパティ 
プロパティ  説明 

oc4j.iiop.keyStoreLoc 

キーストアのパスと名前。絶対パスが推奨されます。 

oc4j.iiop.keyStorePass 

キーストアのパスワード。  

oc4j.iiop.trustStoreLoc 

トラストストアのパス名と名前。絶対パスが推奨されます。 

oc4j.iiop.trustStorePass 

トラストストアのパスワード。  

oc4j.iiop.enable.clientauth 

クライアントがクライアント・サイドの認証をサポートするかどうかを指定します。このプロパティをtrueに設定した場合は、キーストアの場所とパスワードを指定する必要があります。 

nameservice.useSSL 

サーバーとの初期接続時にSSLを使用するかどうかを指定します。  

client.sendpassword 

SSLを使用しない場合に、サービス・コンテキスト内でユーザー名とパスワードをクリアテキスト形式(非暗号化)で送信するかどうかを指定します。このプロパティをtrueに設定すると、ユーザー名とパスワードはtrustedServerリストに含まれるサーバーにのみ送信されます。  

oc4j.iiop.trustedServers 

クリアテキスト形式で送信されるパスワードの受信について信頼できるサーバーのリスト。client.sendpasswordfalseに設定されている場合は、このプロパティの効果はありません。リストはカンマ区切りです。このリストの各エントリには、IPアドレス、ホスト名、ホスト名のパターン(たとえば*.example.com)、または**のみの場合は、すべてのサーバーが信頼できることを示す)を指定できます。  

クライアントがクライアント・サイドSSL認証を使用しない場合は、クライアント・ランタイムがサブジェクトを挿入してユーザー名とパスワードを送信できるように、ejb_sec.propertiesファイル内でclient.sendpasswordを設定する必要があります。また、サーバーを含むようにserver.trustedhostsを設定する必要があります。

クライアントがクライアント・サイドSSL認証を使用する場合、サーバーはクライアントの証明書からDNを抽出し、それを対応するセキュリティ・プロバイダ内で検索します。パスワード認証は実行されません。

次の2種類の信頼関係が存在します。

クライアントは、EJBプロパティoc4j.iiop.trustedServersに信頼できるサーバーをリストします。サーバーは、internal-settings.xml内の<sep-property>要素のtrusted-clientプロパティに信頼できるクライアントをリストします(「internal-settings.xml内のCSIv2セキュリティ・プロパティ(EJBサーバー)」を参照)。

EJB規格の準拠レベル0では、信頼関係について次の2つの処理方法が定義されています。

OC4Jでは、両方の種類の信頼がサポートされます。信頼関係は、orion-ejb-jar.xml内の<ior-security-config>要素を使用して構成します。これについては次項の「orion-ejb-jar.xml内のCSIv2のセキュリティ・プロパティ」で説明します。


注意

  • サーバー・サイドの認証はユーザー名とパスワードより優先されます。

  • SSLクライアント認証を要求するようにサーバーを構成し、アイデンティティ・アサーションの挿入が許可されている信頼できるクライアントの(または中間)ホストのリストも指定できます。

 

orion-ejb-jar.xml内のCSIv2のセキュリティ・プロパティ

この項では、EJB用のCSIv2セキュリティ・プロパティについて説明します。各BeanのCSIv2セキュリティ・ポリシーをorion-ejb-jar.xmlファイル内で個別に構成します。CSIv2セキュリティ・プロパティは<ior-security-config>要素内で指定します。各要素には<transport-config>サブ要素、<as-context>サブ要素、および<sas-context>サブ要素が含まれます。

<ior-security-config>要素のDTDは次のとおりです。

<!ELEMENT ior-security-config (transport-config?, as-context? sas-context?) >
<!ELEMENT transport-config (integrity, confidentiality, 
establish-trust-in-target, establish-trust-in-client) >
<!ELEMENT as-context (auth-method, realm, required) >
<!ELEMENT sas-context (caller-propagation) >
<!ELEMENT integrity (#PCDATA) > 
<!ELEMENT confidentiality (#PCDATA)> 
<!ELEMENT establish-trust-in-target (#PCDATA) > 
<!ELEMENT establish-trust-in-client (#PCDATA) >
<!ELEMENT auth-method (#PCDATA) > 
<!ELEMENT realm (#PCDATA) > 
<!ELEMENT required (#PCDATA)> <!-- Must be true or false --> 
<!ELEMENT caller-propagation (#PCDATA) >

この項の以降の部分で、次の要素について説明します。

<transport-config>要素

この要素には、トランスポートのセキュリティ・レベルを指定します。<transport-config>の各サブ要素は、supportedrequiredまたはnoneに設定する必要があります。設定noneは、Beanがその機能をサポートせず、使用しないことを意味します。supportedは、Beanがその機能の使用をクライアントに許可することを意味します。requiredは、Beanがその機能の使用をクライアントに要求することを意味します。各サブ要素を次に示します。

<as-context>要素

この要素では、メッセージ・レベルの認証プロパティを指定します。各サブ要素を次に示します。

<sas-context>要素

この要素では、アイデンティティ委任プロパティを指定します。この要素には1つのサブ要素<caller-propagation>があり、次のようにsupportedrequiredまたはnoneに設定できます。

例: <ior-security-config>

次の例では、<ior-security-config>要素とそのサブ要素を使用しています。

<ior-security-config> 
  <transport-config> 
    <integrity>supported</integrity> 
    <confidentiality>supported</confidentiality> 
    <establish-trust-in-target>supported</establish-trust-in-target> 
    <establish-trust-in-client>supported</establish-trust-in-client> 
  </transport-config> 
  <as-context> 
    <auth-method>username_password</auth-method> 
    <realm>default</realm> 
    <required>true</required> 
  </as-context> 
  <sas-context> 
    <caller-propagation>supported</caller-propagation> 
  </sas-context> 
</ior-security-config> 

戻る 次へ
Oracle
Copyright © 2003, 2008 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引