注意:
|
Oracle Tuxedo CORBA JavaクライアントとOracle Tuxedo CORBA JavaクライアントORBはTuxedo 8.1で非推奨になり、サポートされなくなりました。すべてのOracle Tuxedo CORBA JavaクライアントおよびOracle Tuxedo CORBA JavaクライアントORBのテキスト・リファレンスとコード・サンプルは、サード・パーティ製のJava ORBライブラリを実装または実行する際の参考や、プログラマの参照用としてのみ使用してください。
|
サード・パーティのCORBA Java ORBのテクニカル・サポートは、各ベンダーによって提供されます。Oracle Tuxedoでは、サード・パーティのCORBA Java ORBに関する技術的なサポートまたはドキュメントは提供していません。
通常、Object Request Broker (ORB)は、重大な障害を
ULOGファイルに書き込みます。CORBA C++ ORBでは、ORB内部トレース機能を有効にすることで、
ULOGファイルの情報以外の情報を参照することもできます。
ULOGファイルを見ると、リモートORBプロセスはデフォルトでは、データを
APPDIRの
ULOGファイルには書き込みません。
•
|
UNIXでは、リモートORBは、情報をカレント・ディレクトリの ULOGファイルに書き込みます。
|
•
|
Windows 2003では、リモートORBは、情報を c:¥ulogディレクトリの ULOGファイルに書き込みます。
|
ULOGPFX環境変数を設定すると、リモートORB用の
ULOGファイルの場所を管理できます(たとえば、
ULOGファイルの場所を
APPDIRに設定し、すべての情報が同じ
ULOGファイルに格納されるようにすることができます)。
ULOGPFX環境変数を次のように設定します。
set ULOGPFX=%APPDIR%¥ULOG
setenv ULOGPFX $APPDIR/ULOG
ORBトレース機能を有効にするには、次の手順を実行します。
1.
|
APPDIRに trace.datという名前のファイルを作成します。 trace.dat内で、 all=onが指定されている必要があります。
|
2.
|
次のコマンドを使用して OBB_TRACE_INPUT環境変数を設定し、 trace.datファイルを参照してからアプリケーションを実行するようにします。
|
set OBB_TRACE_INPUT=%APPDIR%¥trace.dat
ORBトレース機能を別のファイルに送信する場合、次の行を
trace.datファイルに追加します。
このコマンドは、トレース出力を、実行中のプロセスにちなんだ名前のファイルに送信します。たとえば、UNIXのORBトレース機能を、NFSがマウントされたドライブに対して使用する場合に実行できます。この場合、トレース文ごとにユーザー・ログがファイルを開き、書き込み、閉じるために、トレースのパフォーマンスは遅くなります。
ORB_initルーチンは、内部ORBトレース機能を実行しないので、無効な引数の処理に対するトレース出力を確認できません。したがって、
ORB_initルーチンに渡された引数を再確認する必要があります。
ORB_initルーチンの実行中に
CORBA::BAD_PARAM例外が発生した場合は、必要なすべての引数に値が指定されていることを確認してください。また、特定の有効な値のセットからの値が必要な引数に正しい値があることも確認してください。
ORB_initルーチンの引数の値では、大文字/小文字が区別されるので注意してください。
CORBA::NO_PERMISSION例外が発生し、SSL引数が
ORB_initルーチンに指定された場合、セキュリティ・ライセンスが有効になっていることを確認してください。また、指定した暗号化レベルが、セキュリティ・ライセンスでサポートされている暗号化レベルを超えていないことを確認してください。
ORB_initルーチンの実行中に
CORBA::IMP_LIMIT例外が発生した場合は、システム・プロパティの
ORBportと
ORBSecurePortに同じ値が指定されていることを確認してください。
ORB_initルーチンの実行中に
CORBA::Initialize例外が発生した場合は、
OrbIdまたは
configsetが有効であることを確認してください。
Secure Sockets Layer (SSL)引数が
ORB_initルーチンに渡されている場合、ORBは、SSLプロトコルをロードおよび初期化しようとします。SSL引数が渡された場合、ORBは、SSLプロトコルを初期化しようとします。
ORBは、Bootstrapオブジェクトの新しいURLアドレス形式を認識しないので、
corbalocまたは
corbalocs URLアドレス形式を指定した場合、ORBは、
ORB_initルーチンの実行時にSSLプロトコルのロードを試行しません。
SSL引数を
ORB_initルーチンに対して指定した場合は、次をチェックします。
•
|
SSL引数に対して指定した値が、互いに競合しないこと、またはほかのORB引数と競合しないこと。
|
•
|
ORBがネイティブ・プロセスかどうか。ORBがネイティブ・プロセスの場合、SSL引数はサポートされません。
|
•
|
maxCryptoシステム・プロパティ用に指定された値が、 minCryptoシステム・プロパティ用に指定された値より低いこと。この2つのプロパティの値は、ライセンスに適した範囲内にある必要があります。
|
•
|
アプリケーション制御の不正なSSL構成パラメータ。 ORB_initルーチンはデジタル証明書のルックアップを実行しないので、不足しているファイル、またはダイナミック・ライブラリがロードされない可能性のある破損したファイルがないか確認してください。また、ダイナミック・ライブラリがロードされていることも確認してください。ORBトレース機能は、ダイナミック・ライブラリがロードされたかどうかに関する情報を提供します。
|
問題が続く場合は、ORBトレース機能を有効にします。ORBトレース機能は、
liborbsslダイナミック・ライブラリがロードされて初期化されたときに発生するSSLの障害をログに記録します。
パスワード認証に
corbalocs URLアドレス形式を使用しているときにクライアント・アプリケーションが失敗した場合は、次をチェックします。
•
|
初期化エラーが発生したかどうか。SSLシステム・プロパティを ORB_initルーチンに対して指定すると、次の場合にエラーが発生します。
|
•
|
IIOPリスナー/ハンドラが使用不可能な場合。ORBトレース・ログには、失敗した接続の試行が記録されます。
|
•
|
IIOPリスナー/ハンドラは使用可能だが、SSLプロトコルをサポートしていない場合。 ULOGファイルには、非GIOPメッセージを受信したことが記録されます。
|
•
|
IIOPリスナー/ハンドラが使用可能で、SSLプロトコル用に構成されているが、SSL接続を確立できなかった場合。IIOPリスナー/ハンドラがサポートしている暗号化レベルの範囲と、クライアント・アプリケーションで必要な暗号化レベルの範囲が一致していない場合に、このエラーが発生します。
|
IIOPリスナー/ハンドラがSSLプロトコル用に構成されているものの、セキュリティで保護されている接続を示す
corbalocs接頭辞なしにCORBAクライアント・アプリケーションが
TOBJADDRオブジェクトを使用している場合に、
ULOGファイルに、非GIOPメッセージを受信したことが記録されます。
証明書による認証に
corbalocs URLアドレス形式を使用しているときにクライアント・アプリケーションが失敗した場合は、次をチェックします。
•
|
SSLシステム・プロパティを ORB_initルーチンに対して指定すると、次の場合にエラーが発生します。
|
•
|
IIOPリスナー/ハンドラが使用不可能な場合。ORBトレース・ログには、失敗した接続の試行が記録されます。
|
•
|
IIOPリスナー/ハンドラは使用可能だが、SSLプロトコルをサポートしていない場合。 ULOGファイルには、非GIOPメッセージを受信したことが記録されます。
|
•
|
IIOPリスナー/ハンドラが使用可能で、SSLプロトコル用に構成されているが、SSL接続を確立できなかった場合。IIOPリスナー/ハンドラがサポートしている暗号化レベルの範囲と、クライアント・アプリケーションで必要な暗号化レベルの範囲が一致していない場合に、このエラーが発生します。また、クライアント・アプリケーションが、IIOPリスナー/ハンドラの証明書チェーンを信頼しない場合、またはクライアント・アプリケーションがIIOPリスナー/ハンドラから証明書を受け取らなかった場合にも、エラーが発生します。エラーは、 ULOGファイルに書き込まれ、ORBトレース出力にも表示されます。
|
エラーが発生しない場合、問題は認証プロセスにあります。
ULOGファイルには、問題を示す次のエラー文のいずれかが含まれています。
•
|
Couldn't connect to an LDAP server
|
•
|
Couldn't find a filter that matched the client certificate
|
•
|
The client certificate was not found in LDAP
|
•
|
The private key file could not be found
|
•
|
The passphrase used to open the private key is not correct
|
•
|
The public key from the client certificate did not match the private key
|
注意:
|
初期化プロセスの時点で発生した障害は、IIOPリスナー/ハンドラの問題ではありません。
|
Tobj::Bootstrap::
resolve_initial_referencesの問題
corbalocまたは
corbalocs URLアドレス形式で
Tobj::Bootstrap::resolve_initial_referencesを実行しているときに障害が発生した場合、
CORBA::InvalidDomain例外が発生します。この例外は、内部で発生する
CORBA::NO_PERMISSION例外または
CORBA::COMM_FAILURE例外をマスクする場合があります。
ULOGファイルを参照し、ORBトレース機能を有効にしてエラーの詳細を確認してください。次のエラーが発生する可能性があります。
•
|
IIOPリスナー/ハンドラが使用不可能な場合、ORBトレース・ログには、失敗した接続試行が記録されます。
|
•
|
IIOPリスナー/ハンドラは使用可能だが、SSLプロトコルをサポートしていない場合、 ULOGファイルには、非GIOPメッセージを受信したことが示されます。
|
•
|
IIOPリスナー/ハンドラが使用可能で、SSLプロトコル用に構成されているが、SSL接続を確立できなかった場合。IIOPリスナー/ハンドラがサポートしている暗号化レベルの範囲と、クライアント・アプリケーションで必要な暗号化レベルの範囲が一致していない場合に、このエラーが発生します。
|
•
|
IIOPリスナー/ハンドラが、証明書をユーザー名/パスワードの組合せにマップできなかった場合。CORBAアプリケーションのセキュリティのレベルが USER_AUTHに設定されていること、および指定したユーザー名が、認証呼出しに渡されたプリンシパル名に一致していることを確認します。また、ユーザー名が30文字を超えていないこともチェックしてください。
|
ここでは、IIOPリスナー/ハンドラの起動時に発生する可能性がある問題について説明します。
IIOPリスナー/ハンドラを起動しているときに障害が発生した場合、
ULOGファイルをチェックしてエラーの詳細を確認します。IIOPリスナー/ハンドラは、
CLOPTパラメータで指定したSSL引数の値が有効かどうかを確認します。値のいずれかが無効な場合、対応するエラーが
ULOGファイルに記録されます。このチェックは、ORBで実行される引数チェックに似ています。
IIOPリスナー/ハンドラは、
-mオプションが指定されないかぎりプロセスを開始しません。ISHは、SSLライブラリを実際にロードおよび初期化するプロセスです。ISHプロセスのSSLライブラリのロードおよび初期化で問題が発生した場合、ISHプロセスがクライアント・アプリケーションからの着信リクエストの処理を開始するまで、エラーは
ULOGファイルに記録されません。
IIOPリスナー/ハンドラ・プロセスの起動で問題が発生したと思われる場合は、
ULOGファイルを確認してください。
ここでは、セキュリティ使用時に発生する一般的な構成の問題を解決する方法について説明します。
•
|
ISLコマンドのORB -ORBpeerValidateコマンド行オプションと -vオプションは、ピア検証の規則のチェックを制御しません。このシステム・プロパティとオプションは、プリンシパルの接続先マシンのホスト名に対するピア証明書で指定されたホスト名のチェックのみを制御します。
|
•
|
インストールしたキットでピア検証の規則を無効にする唯一の方法は、 %TUXDIR%\udataobj\security\certs\peer_val.rulに空のファイルを作成することです。CORBAアプリケーションを構築するスクリプトを記述している場合でも、スクリプトで peer_val.rulファイルを登録することはできません。
|
•
|
IIOPリスナー/ハンドラで再ネゴシエーション間隔を有効にしている場合、ISLコマンドのオプションが -rではなく -Rであることを確認します。 -rを使用する場合、IIOPリスナー/ハンドラはSSLプロトコルを使用しますが、再ネゴシエーション間隔は使用されません。また、 ULOGファイルには、IIOPリスナー/ハンドラで不明なオプションを指定したことが記録されます。
|
IIOPリスナー/ハンドラが再ネゴシエーションを実行しているかどうかを判定する別の方法は、クライアント側でORBトレース機能を有効にし、暗号スイート・ネゴシエーション・コールバックが構成済の再ネゴシエーション間隔を呼び出しているかどうかをチェックすることです。再ネゴシエーションが発生するためには、クライアント・アプリケーションがリクエストを送信している必要があります。
•
|
CORBAアプリケーションの UBBCONFIGファイルで SECURITYパラメータを APP_PW以上になるように定義しており、(相互認証ではなく)SSLプロトコルを使用するようにIIOPリスナー/ハンドラを構成している場合、IIOPリスナー/ハンドラと通信するために corbalocs URLアドレス形式でパスワード認証を使用する必要があります。証明書による認証の使用を試行しても、IIOPリスナー/ハンドラは、SSL接続を確立するときにプリンシパルに証明書を要求しないので、IIOPリスナー/ハンドラは、プリンシパルのIDをOracle TuxedoのIDにマップできません。
|
SSLプロトコルでコールバック・オブジェクトを使用する場合の問題
共同クライアント/サーバー・アプリケーションがあり、そのクライアント側で
corbalocs URLアドレス形式を使用するか、資格証明を要求してセキュリティ要件を指定している場合、
ORB_initルーチンで
-ORBsecurePortシステム・プロパティを使用して、使用するセキュリティ保護ポートを指定する必要があります。
-ORBsecurePortシステム・プロパティを指定しない場合、
CORBA::NO_PERMISSION例外が発生してサーバー登録が失敗します。これが問題かどうかを検証するには、ORBトレース機能を有効にして、次のトレース出力を探します。
TCPTransport::Listen: FAILURE: Attempt to listen on clear port while Credentials require SSL be used
コールバック・オブジェクトでSSLプロトコルを使用する場合、共同クライアント/サーバー・アプリケーションは、証明書による認証で
SecurityLevel2::PrincipalAuthenticator::authenticate()メソッドを使用する必要があります。それ以外の場合、共同クライアント/サーバー・アプリケーションは、IIOPリスナー/ハンドラ(ここでは、SSL接続のイニシエータ)に対して自身を識別するための証明書を持ちません。
通常、デジタル証明書の問題は、次の場合に起こります。
•
|
IIOPリスナー/ハンドラの証明書チェーンにあるデジタル証明書のいずれか1つが trust_ca.cerファイルに定義されている認証局から受け取ったものではない場合。 trust_ca.cerファイルの認証局が無効な場合に、問題が発生することがあります。
|
•
|
クライアント・アプリケーションに接続されたIIOPリスナー/ハンドラが、ホスト一致チェックを実行したときにIIOPリスナー/ハンドラのデジタル証明書で指定したホスト名と同じでない場合。IIOPリスナー/ハンドラ名は、IIOPリスナー/ハンドラの固有名の CommonName属性で指定します。ホスト名と CommonName属性は、正確に一致している必要があります。
|
-ORBpeerValidateシステム・プロパティを
noneに設定し、再度
ORB_initルーチンを実行すると、このエラーを検証できます。
•
|
IIOPリスナー/ハンドラの証明書チェーンにあるデジタル証明書のいずれか1つが、指定したピア検証の規則と一致していない場合。
|
•
|
IIOPリスナー/ハンドラのデジタル証明書が無効の場合。IIOPリスナー/ハンドラのデジタル証明書は、改ざんされた場合、期限切れの場合、または発行元の認証局が期限切れの場合、無効になります。
|
理由がわからずにデジタル証明書が拒否された場合は、次の手順を実行します。
1.
|
Microsoft Explorerなどのビューアでデジタル証明書を開きます。
|
2.
|
デジタル証明書の KeyUsageプロパティおよび BasicConstraintsプロパティを確認します。感嘆符が付いた黄色い三角形のマークは、そのプロパティに問題があることを示します。プロパティにそのマークが付いたデジタル証明書は、Oracle Tuxedoソフトウェアによって拒否されます。
|
3.
|
デジタル証明書のそのプロパティに問題がない場合、証明書チェーン内の次のデジタル証明書のプロパティをチェックします。証明書チェーン内のすべてのデジタル証明書に対して、そのプロパティを検証するまで、この手順を繰り返します。
|