WebSphere Application Server for z/OS, Version 6.1   
             オペレーティング・システム: z/OS

             目次と検索結果のパーソナライズ化

Secure Sockets Layer エラー

Secure Sockets Layer (SSL) を構成、または使用可能にした後で、さまざまな問題が 発生することがあります。SSL の構成後、デプロイメント・マネージャーを停止できなくなる 場合があります。また、HTTPS を使用したリソースにアクセスできなくなることもあります。 クライアントとサーバー間のネゴシエーションが、適切なセキュリティー・レベルで できなくなる場合があります。ここで取り上げる問題は、さまざまな可能性のごく一部にすぎません。 WebSphere Application Server を正常に運用するためには、 これらの問題の解決が必須です。

どのような問題が発生しましたか?

Secure Sockets Layer の構成後にデプロイメント・マネージャーを停止する

Secure Sockets Layer レパートリーを構成した後、ノード・エージェントを停止しないでデプロイメント・マネージャーを停止すると、次の回にデプロイメント・マネージャーを起動したときに以下のようなエラー・メッセージが表示されます。

CWWMU0509I: サーバー "nodeagent" にアクセスできません。It appears to be stopped.
CWWMU0211I: エラーの詳細については次のファイルを参照してください:
           /opt/WebSphere/AppServer/logs/nodeagent/stopServer.log

このエラーは、デプロイメント・マネージャーが各ノード・エージェントに新しい SSL 証明書を伝搬しなかったために起こります。 ノード・エージェントはデプロイメント・マネージャーよりも古い証明ファイルを使っており、証明ファイルに互換性がありません。 この問題に対処するには、 ノード・エージェントとデプロイメント・マネージャーのプロセスを手動で停止します。

プロセスを終了するには、MVS コンソールを使用して c process_name と入力します。

停止する個々のプロセスを特定する際には、一定の項目について考慮する必要があります。 WebSphere Application Server は、停止される各プロセスについてプロセス ID を pid ファイルに保管するため、これらの *.pid ファイルを見つける必要があります。 例えば、スタンドアロン・インストール操作の server1.pid は、install_root/logs/server1.pid にあります。

HTTPS を使ったリソースへのアクセス

Secure Sockets Layer (SSL) の URL (https: で始まる) を使用するリソースにアクセスできない場合、 または、SSL の問題を示すエラー・メッセージが表示される場合は HTTP サーバーが SSL 用に正しく構成されているか確認します。 URL https://host_name を入力し、SSL を使用している HTTP サーバーの「ようこそ」ページをブラウズします。

HTTPS ではなく HTTP によってページにアクセスできる場合は、HTTP サーバーに問題があります。
  • SSL を正しく使用できるようにするための説明については、 ご使用の HTTP サーバーの資料を参照してください。 IBM HTTP Server または Apache を使用している場合は、http://www.ibm.com/software/webservers/httpservers/library.html にアクセスしてください。 「Frequently Asked Questions」>「SSL」の順にクリックします。
  • IBM 鍵管理 (IKeyman) ツールを使用して証明書と鍵を作成する場合は 、IBM 鍵管理ツールを使用して鍵データベース (KDB) ファイルを作成する際に、 パスワードをファイルに隠しておくことを忘れないでください。
    1. KDB ファイルが作成されたディレクトリーに移動し、.sth ファイルがあるかどうかを確認します。
    2. ない場合は、IBM 鍵管理ツールを使用して KDB ファイルを開き、 「Key Database File」>「Stash Password」の順にクリックします。 「The password has been encrypted and saved in the file」というメッセージが表示されます。

HTTP サーバーが SSL 暗号化要求を正常に処理する場合、 または、HTTP サーバーが関係しない (例えば、トラフィックが Java クライアント・アプリケーションから WebSphere Application Server が ホストするエンタープライズ Bean に直接送信されるか、 あるいは WebSphere Application Server セキュリティーを使用可能にした後にのみ問題が発生する) 場合には、 どのようなエラーが表示されますか?

システム SSL: System Secure Sockets Layer (SSL) 呼び出し可能サービスのプログラミング・インターフェースの使用に関する情報は、「z/OS System Secure Sockets Layer プログラミング (SD88-6252)」を参照してください。

セキュリティー関連の問題を診断および解決するための一般的なヒントについては、セキュリティー・コンポーネントのトラブルシューティングのヒント を参照してください。

類似した問題が見つからない場合、 または提供されている情報では問題が解決されない場合は、 IBM からのトラブルシューティングのヘルプ を参照してください。

javax.net.ssl.SSLHandshakeException - The client and server could not negotiate the desired level of security. Reason: handshake failure

次の例のような Java 例外スタックが表示される場合、
[Root exception   is org.omg.CORBA.TRANSIENT:  CAUGHT_EXCEPTION_WHILE_CONFIGURING_SSL_CLIENT_SOCKET: CWWJE0080E:   javax.net.ssl.SSLHandshakeException - The client and server could not negotiate the desired level of   security. Reason: handshake failure:host=MYSERVER,port=1079 minor code: 4942F303 completed: No]   at com.ibm.CORBA.transport.TransportConnectionBase.connect (TransportConnectionBase.java:NNN)
次のような原因が考えられます。
  • クライアントとサーバーの間に共通する暗号がない。
  • 正しいプロトコルを指定していない。
以下の方法で、これらの問題を解決します。
  1. SSL 設定を確認します。管理コンソールで、「セキュリティー」>「SSL 証明書および鍵管理」とクリックします。 「構成設定」で、「エンドポイント・セキュリティー構成の管理」 > 「endpoint_configuration_name」 とクリックします。 「関連項目」の下で「SSL 構成」>「SSL_configuration_name」とクリックします。 install_root/properties/sas.client.props ファイルを表示することにより、このファイルを手動で参照することもできます。
  2. com.ibm.ssl.protocol ファイルで指定されたプロパティーを確認して、指定されたプロトコルを判別します。
  3. com.ibm.ssl.enabledCipherSuites インターフェースで指定された暗号タイプを確認します。 リストに暗号タイプを追加することもできます。 どの暗号スイートが現在使用可能になっているかを確認するには、 「Quality of protection settings (QoP)」をクリックして、 「暗号スイート」プロパティーを探します。
  4. 異なるクライアント・プロトコルまたはサーバー・プロトコル、および暗号選択を使用することにより、 プロトコルまたは暗号の問題を解決します。 一般的なプロトコルは SSL または SSLv3 です。

javax.net.ssl.SSLHandshakeException: unknown certificate

グローバル・セキュリティーが使用可能になっていると、 以下のグローバル・プロパティーを設定しているアプリケーションで、 アウトバウンド SSL 通信が失敗する場合があります。
  • javax.net.ssl.keystore
  • javax.net.ssl.truststore
これは、WebSphere Application Server がシステム管理操作を実行する際に、 内部で Apache SOAP を使用するためです。グローバル・セキュリティーが使用可能になっていると、 Apache SOAP はノード間の通信に SSL を使用します。システム・プロパティー「javax.net.ssl.keystore」 および「javax.net.ssl.truststore」は、SOAP 通信ごとに 設定されます。これらのプロパティーを使用するアプリケーションでは、その値が 変更されます。アウトバウンド JSSE 通信では、アプリケーションで指定する鍵ファイルではなく、 SOAP サービスが使用する SSL レパートリーで定義される鍵ファイルが 使用されます。アプリケーションが「cacerts」ファイルに依存する場合も、 これと同じ問題が発生します。

解決策としては、 システム・プロパティーを使用せず、独自の鍵ストア/トラストストアを定義するソケット・ファクトリーを 使用することをお勧めします。例については、 http://www.ibm.com/developerworks/java/library/j-customssl/ を参照してください。

他のシナリオでも、同じエラーが発生する場合が あります。次の例のような Java 例外スタックが表示される場合は、 クライアントのトラストストア・ファイルにサーバー用の個人証明書がないことが原因となっている可能性があります。
ERROR: 初期コンテキストを取得できないか、開始コンテキストを検索できません。
終了します。
Exception received:
javax.naming.ServiceUnavailableException: A communication failure occurred
while attempting to obtain an initial context using the provider url: "corbaloc:iiop:localhost:2809".
Make sure that the host and port information is correct and that the server
identified by the provider url is a running name server. If no port number
is specified, the default port number 2809 is used.Other possible causes include
the network environment or workstation network configuration. [Root exception   is org.omg.CORBA.TRANSIENT:  CAUGHT_EXCEPTION_WHILE_CONFIGURING_SSL_CLIENT_SOCKET: CWWJE0080E:   javax.net.ssl.SSLHandshakeException - The client and server could not negotiate the desired level of   security. Reason: unknown certificate:host=MYSERVER,port=1940 minor code: 4942F303 completed: No]
以下の方法でこの問題を解決します。
  1. クライアントのトラストストア・ファイルをチェックして、 サーバー個人証明書からの署名者証明書があるかどうかを確認します。 自己署名のサーバー個人証明書の場合、署名者証明書が、個人証明書の公開鍵です。 認証局 (CA) 署名のサーバー個人証明書の場合、 署名者証明書が、個人証明書に署名した CA のルート CA 証明書です。
  2. サーバー署名者証明書をクライアントのトラストストア・ファイルに追加します。

javax.net.ssl.SSLHandshakeException: 不正な証明書

グローバル・セキュリティーが使用可能になっていると、 以下のグローバル・プロパティーを設定しているアプリケーションで、 アウトバウンド SSL 通信が失敗する場合があります。
  • javax.net.ssl.keystore
  • javax.net.ssl.truststore
これは、WebSphere Application Server がシステム管理操作を実行する際に、 内部で Apache SOAP を使用するためです。グローバル・セキュリティーが使用可能になっていると、 Apache SOAP はノード間の通信に SSL を使用します。システム・プロパティー「javax.net.ssl.keystore」 および「javax.net.ssl.truststore」は、SOAP 通信ごとに 設定されます。これらのプロパティーを使用するアプリケーションでは、その値が 変更されます。アウトバウンド JSSE 通信では、アプリケーションで指定する鍵ファイルではなく、 SOAP サービスが使用する SSL レパートリーで定義される鍵ファイルが 使用されます。アプリケーションが「cacerts」ファイルに依存する場合も、 これと同じ問題が発生します。

解決策としては、 システム・プロパティーを使用せず、独自の鍵ストア/トラストストアを定義するソケット・ファクトリーを 使用することをお勧めします。例については、 http://www.ibm.com/developerworks/java/library/j-customssl/ を参照してください。

他のシナリオでも、同じエラーが発生する場合が あります。以下の状態が発生した場合は、Java 例外スタック・エラーが表示されることがあります。
  • 個人証明書が、SSL 相互認証に使用されるクライアントの鍵ストアに存在します。
  • 署名者証明書がサーバーのトラストストア・ファイルに抽出されないために、サーバーが SSL ハンドシェークを行う際に証明書を信頼できません。
以下のメッセージは、Java 例外スタック・エラーの例です。
ERROR: 初期コンテキストを取得できないか、開始コンテキストを検索できません。
終了します。
Exception received:
javax.naming.ServiceUnavailableException: A communication failure occurred
while attempting to obtain an initial context using the provider url: "corbaloc:iiop:localhost:2809".
Make sure that the host and port information
is correct and that the server identified by the provider url is a running name
server.  If no port number
is specified, the default port number 2809 is used.Other possible causes include
the network environment or workstation network configuration. [Root exception   is org.omg.CORBA.TRANSIENT:  CAUGHT_EXCEPTION_WHILE_CONFIGURING_SSL_CLIENT_SOCKET: CWWJE0080E:   javax.net.ssl.SSLHandshakeException - The client and server could not negotiate the desired level of   security. Reason:
bad certificate: host=MYSERVER,port=1940 minor code: 4942F303 completed: No]

この問題を確認するには、サーバーのトラストストア・ファイルをチェックして、 クライアント個人証明書からの署名者証明書があるかどうかを確認してください。 自己署名のクライアント個人証明書の場合、署名者証明書が、個人証明書の公開鍵です。 認証局 (CA) 署名のクライアント個人証明書の場合、 署名者証明書が、個人証明書に署名した CA のルート CA 証明書です。

この問題を解決するには、 クライアント署名者証明書をサーバーのトラストストア・ファイルに追加します。

GUI アプリケーション・クライアントで「カタログ」タブレットが ブランクである (項目が表示されない)

このエラー・メッセージは、 PlantsByWebSphere Active X から EJB へのブリッジを使用する ActiveX クライアント・サンプル・アプリケーションを インストールすると、表示されます。

原因は、サーバー証明書が、 client.ssl.props ファイルで指定されるクライアント・トラストストアにないためです。 「com.ibm.ssl.enableSignerExchangePrompt」署名者プロパティーが true に設定されていても、 自動切り替えプロンプトはコマンド行プロンプトしかサポートしていません。 サンプル・アプリケーションがグラフィカル・ユーザー・インターフェースに依存して、 コマンド・プロンプトへのアクセスを提供しない場合 (例えば標準入力や標準出力を使用する場合)、 自動切り替えプロンプトは機能しません。

注: クライアント・テクノロジー・サンプルの アプレット・クライアントは、コマンド・プロンプトへのアクセス権を持たないため、 自動切り替えプロンプトを表示できません。したがって、アプレット・クライアントは 自動切り替えプロンプト機能を当てにすることはできません。

この問題を修正するためには、 retrieveSigners ユーティリティーを使用して手動で証明書を取得します。

-scriptCompatibility true を使用したマイグレーション後の、 SSL 構成の変更

scriptCompatibility true を使用したマイグレーション後は、SSL 構成のすべての属性が管理コンソールから編集できなくなります。 特に、ハードウェアの暗号設定は、表示できなくなるか、編集不能になります。

scriptCompatibility true フラグを使用すると、SSL 構成は、リリース 6.1 でのサポートのための新しいフォーマットにマイグレーションされません。 構成が最新フォーマットにマイグレーションされないときに、サポートされない新規機能が追加されました。

この問題を解決するには、6.1 より古いフォーマットの SSL 構成定義に代わる 新しい SSL 構成定義を作成するか、あるいは引き続き、スクリプトによってそれらの構成を編集します。




関連概念
welc6toptroubleshooting.html
関連タスク
retrieveSigners ユーティリティー使用によるクライアントでの署名者の取得
セキュリティー構成のトラブルシューティング
関連資料
アプリケーション・デプロイメントのトラブルシューティングのヒント
参照トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 9:12:22 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.zseries.doc/info/zseries/ae/rtrb_sslprobs.html