Red Hat Training

A Red Hat training course is available for Red Hat JBoss Operations Network

4.3. SSL の問題のトラブルシューティング

SSL の接続問題の最も一般的なシンボリックリンクは、JBoss ON サーバーへの接続を確立できないため、起動時にエージェントがハングする点です。SSL 問題が発生したかどうかを確認するには、さまざまなエリアがあります。

4.3.1. 一般的な SSL 接続の問題

SSL の問題は単に接続の問題です。これは、エージェントまたはサーバー設定に問題があることを示しています。設定が正常であることを確認するための一般的なエリアがいくつかあります。
  • エージェントとサーバーのホスト名の両方がサーバー証明書のホスト名で解決可能であることを確認してください。
  • サーバーのセキュアなポートに指定されたポート番号が実際にサーバーに設定されたポート番号であることを確認してください。Administration > High Availability > Servers ページを確認して、パブリックエンドポイントのアドレスとポートが正しいことを確認します。UI でサーバー定義を編集して、SSL 設定と同じにします。

    図4.1 サーバーのホスト名およびポート設定

    サーバーのホスト名およびポート設定
    この値が SSL 接続に設定された値と同じ値と一致しない場合、エージェントはサーバーと通信できません。
  • エージェントとサーバーのホスト名の両方がサーバー証明書のホスト名で解決可能であることを確認してください。
  • agent-server 通信に使用されるすべての証明書が適切なエイリアスを持つ必要なキーストアに保存されていることを確認します。
  • パスワードがキーストアにアクセスするよう適切に設定されていることを確認します。
  • 通信が TLS を使用するように設定されていることを確認します。
  • サーバーおよびエージェント設定(特に割り当てられたトランスポート(ソケットまたはサーブレット))オプションを検証します。の設定例は次のとおりです 「SSL 設定例」
  • クライアント認証が必要で、サーバーが sslservlet transport オプションを使用している場合、JBoss ON UI に接続するすべてのユーザーに、クライアント認証を使用してサーバー UI に接続できるように、JBoss ON UI にインストールされたユーザー証明書があることを確認します。エージェント証明書と同様に、ユーザー証明書はサーバーのキーストアに保存する必要があり 「サーバーおよびエージェント間のクライアント認証の設定」 ます。
    ユーザーがクライアント認証を使用して接続できない場合は、の sslsocket 代わりにサーバーを変更し sslservletます。

4.3.2. SSL デバッグの有効化

エージェントで詳細なロギングを有効にすると、エージェントログにさらに詳細な SSL 通信メッセージが返され、接続の問題の診断に役立ちます。
  1. エージェントの環境変数ファイルを開きます。これにより、デバッグログ設定を含む、エージェントが実行される JVM の設定の一部を定義します。
    vim agentRoot/rhq-agent/bin/rhq-agent-env.sh
  2. デバッグ環境変数を設定する RHQ_AGENT_ADDITIONAL_JAVA_OPTS 行を追加します。
    RHQ_AGENT_ADDITIONAL_JAVA_OPTS="-Djavax.net.debug=all"
  3. エージェントを再起動します。
    agentRoot/rhq-agent/bin/rhq-agent.sh

4.3.3. SSL 設定例

以下の例は、異なる暗号化シナリオおよび認証設定シナリオのサーバー設定ファイルとエージェント設定ファイルの両方で正しい設定を示しています。
注記
以下の例は最小限の設定のみを示し、デフォルトのキーストアおよびトラストストアの使用を想定しています。関連するキーストアおよびトラストストアプロパティーを適切な値で更新する必要があります。

例4.1 暗号化のみ: サーバー(sslservlet)およびエージェント(sslsocket)

サーバーの設定 エージェントの設定
rhq.communications.connector.transport=sslservlet
rhq.communications.connector.bind-address=
rhq.communications.connector.bind-port=
rhq.communications.connector.transport-params=/jboss-remoting-servlet-invoker/ServerInvokerServlet
rhq.server.tomcat.security.client-auth-mode=false
rhq.server.client.security.server-auth-mode-enabled=false
<entry key="rhq.communications.connector.transport" value="sslsocket" />
<entry key="rhq.agent.server.transport" value="sslservlet" />
<entry key="rhq.agent.server.bind-port" value="7443" />
エージェント設定は、sslservlet またはのいずれかになるように サーバーの接続 情報を定義し sslsocketます。エージェントは、受信メッセージしか受信できません sslsocket

例4.2 暗号化のみ: サーバー(sslsocket)およびエージェント(sslsocket)

サーバーの設定 エージェントの設定
rhq.communications.connector.transport=sslsocket
rhq.communications.connector.bind-address=
rhq.communications.connector.bind-port=7800
rhq.communications.connector.transport-params=
rhq.server.tomcat.security.client-auth-mode=false
rhq.server.client.security.server-auth-mode-enabled=false
<entry key="rhq.agent.server.transport"        value="sslsocket" />
<entry key="rhq.agent.server.bind-port"        value="7800" />
<entry key="rhq.agent.server.transport-params" value="" />
エージェント設定 はサーバーの接続 情報を定義するため、サーバーの rhq-server.properties ファイルの設定と一致する必要があります。

例4.3 暗号化およびクライアント認証: サーバー(sslservlet)およびエージェント(sslsocket)

サーバーの設定 エージェントの設定
rhq.communications.connector.transport=sslservlet
rhq.communications.connector.bind-address=
rhq.communications.connector.bind-port=
rhq.communications.connector.transport-params=/jboss-remoting-servlet-invoker/ServerInvokerServlet
rhq.server.tomcat.security.client-auth-mode=true
rhq.server.client.security.server-auth-mode-enabled=true
<entry key="rhq.communications.connector.transport" value="sslsocket" />
<entry key="rhq.agent.server.transport"        value="sslservlet" />
<entry key="rhq.agent.server.bind-port"        value="7443" />
<entry key="rhq.communications.connector.security.client-auth-mode"       value="need" />
<entry key="rhq.agent.client.security.server-auth-mode-enabled" value="true" />

例4.4 暗号化およびクライアント認証: サーバー(sslsocket)およびエージェント(sslsocket)

サーバーの設定 エージェントの設定
rhq.communications.connector.transport=sslsocket
rhq.communications.connector.bind-address=
rhq.communications.connector.bind-port=55555
rhq.communications.connector.transport-params=

rhq.communications.connector.security.client-auth-mode=need
rhq.server.client.security.server-auth-mode-enabled=true
<entry key="rhq.agent.server.transport"        value="sslsocket" />
<entry key="rhq.agent.server.bind-port"        value="55555" />
<entry key="rhq.agent.server.transport-params" value="" />
<entry key="rhq.communications.connector.security.client-auth-mode"       value="need" />
<entry key="rhq.agent.client.security.server-auth-mode-enabled" value="true" />