Enterprise Manager の通信の設定

デフォルトでは、Enterprise Manager(EM)は、エージェント、Workstation、および WebView との通信、また Enterprise Manager のクラスタとの通信に、ポート 5001 を使用します。このポートのデフォルトの EM 通信チャネルは、セキュアではありません。SSL サーバ ソケットを設定することにより、デフォルトの通信チャネルに加えて、Enterprise Manager のセキュアな通信チャネルを有効にすることができます。Enterprise Manager へのソケット通信はすべて保護されており、パスワードはセキュアな通信チャネルで暗号化されます。
apmdevops102jp
デフォルトでは、Enterprise Manager(EM)は、エージェント、Workstation、および WebView との通信、また Enterprise Manager のクラスタとの通信に、ポート 5001 を使用します。このポートのデフォルトの EM 通信チャネルは、セキュアではありません。SSL サーバ ソケットを設定することにより、デフォルトの通信チャネルに加えて、Enterprise Manager のセキュアな通信チャネルを有効にすることができます。Enterprise Manager へのソケット通信はすべて保護されており、パスワードはセキュアな通信チャネルで暗号化されます。
 管理者は、以下のタスクを実行して、使用環境の Enterprise Manager の通信を設定します。
3
デフォルトの Enterprise Manager の通信チャネルの設定
IntroscopeEnterpriseManager.properties
ファイルでは、Enterprise Manager と通信する各エージェントの通信チャネル プロパティを指定します。を変更します。
以下の手順に従います。
  1. <EM_Home>/config
    ディレクトリに移動します。
  2. テキスト エディタで
     IntroscopeEnterpriseManager.properties
    ファイルを開きます。
  3. 以下の通信チャネル プロパティを必要な値に変更します。
    • introscope.enterprisemanager.serversocketfactory.<ChannelName>
      Enterprise Manager が Workstation およびエージェントとの暗号化通信に使用するサーバ ソケット ファクトリのクラス名を指定します。
    • introscope.enterprisemanager.port.
      <
      ChannelName
      >
      Enterprise Manager が Workstation およびエージェントとの暗号化通信に使用するリスナ ポートを指定します。
      注:
      IntroscopeWebView.properties
      ファイルは、
      introscope.webview.enterprisemanager.tcp.port
      プロパティで Enterprise Manager ポートを指定します。
    • introscope.enterprisemanager.enabled.channels
      Enterprise Manager が使用できる通信チャネルを指定します。
  4. ファイルを保存して閉じます。
  5. Enterprise Manager を再起動します。
注: エージェントのプロパティの設定については、「Java エージェント」または「.NET エージェント」を参照してください。
通信チャネルの再バインド
ソケットが非アクティブ状態になったときにメモリがまだ使用されている場合は、使用中のポートに通信チャネルを再バインドすることができます。非アクティブ状態の例としては、
FIN_WAIT
TIME_WAIT
などが挙げられます。
注:
デフォルトではこのプロパティを有効にしないでください。ソケットが使用不可の状態になっている時のみ使用してください。ポートがまだ使用中の可能性があるため、Enterprise Manager が開始した後にのみこのプロパティを無効にしてください。たとえば、同じマシン上のコレクタが既にポートにバインドされている場合、ポートは使用中です。
以下の手順に従います。
  1. <EM_Home>/config
    ディレクトリに移動します。
  2. テキスト エディタで
    IntroscopeEnterpriseManager.properties
    ファイルを開きます。
  3. 以下のプロパティを true に設定します。
    introscope.enterprisemanager.serversockets.reuseaddr
    デフォルト
    : false
  4. ファイルを保存して閉じます。
  5. Enterprise Manager を再起動します。
Enterprise Manager の SSL 通信の有効化
SSL サーバ ソケットを設定することにより、デフォルトの通信チャネルに加えて、Enterprise Manager のセキュアな通信チャネルを有効にすることができます。
以下の手順に従います。
  1. <EM_Home>/config
    ディレクトリに移動します。
  2. テキスト エディタで
    IntroscopeEnterpriseManager.properties
    ファイルを開きます。
  3. Enterprise Manager の通信チャネル プロパティに移動します。
  4. introscope.enterprisemanager.enabled.channels
    プロパティの 2 番目のオカレンスのコメントを解除して、チャネル 2 を有効にします。
    # Use this to enable both the default channel and secure channel. introscope.enterprisemanager.enabled.channels=channel1,channel2
  5. 他のすべての SSL プロパティを必要な値に変更します。詳細については、「SSL プロパティ ルール」を参照してください。
  6. ファイルを保存して閉じます。
  7. Enterprise Manager を再起動します。
SSL プロパティ ルール 
IntroscopeEnterpriseManager.properties
ファイル内の SSL 通信チャネル プロパティを設定する場合は、以下のルールに従います。
  • キーストア プロパティは、Enterprise Manager をクライアントに認証させるための証明書が含まれるキーストアの場所を示します。Enterprise Manager のデフォルトのキーストアには、セキュアではない自己署名証明書が含まれています。ただし、Workstation とエージェントは、デフォルトではサーバ証明書を検証しません。
  • キーストア プロパティは、絶対パスまたは
    config 
    ディレクトリを基準にした相対パスのどちらかです。
  • needclientauth 
    プロパティが
    true
    に設定されている場合、Enterprise Manager はクライアントに認証するよう要求します。
  • Enterprise Manager は、トラストストアを使用して設定する必要があります。
  • エージェントと Workstation は、Enterprise Manager によって信頼された証明書を含むキーストアを使用して設定する必要があります。
  • needclientauth
    プロパティが
    true
    に設定されている場合にトラストストアが設定されていないと、Enterprise Manager は起動しません。起動するには、トラストストア プロパティの設定が必要です。
  • トラストストア プロパティは、信頼できるクライアントの証明書を含むトラストストアの場所です。このプロパティは、クライアントが認証を要求された場合に必要です。トラストストアを指定しないと、すべてのクライアントが信頼されます。
  • ciphersuites 
    プロパティを使用して、有効な暗号スイートを設定します。このプロパティは、匿名認証を有効にしたり、データ暗号化を回避したりする場合に使用できます。匿名認証の場合、暗号スイートを
    SSL_DH_anon_WITH_RC4_128_MD5
    に設定します。
    例:
    introscope.enterprisemanager.ciphersuites.channel2=SSL_DH_anon_WITH_RC4_128_MD5
  • 特定の JSSE 実装には、匿名認証を使用できるいくつかの暗号スイートがあります。匿名認証の暗号スイートは、名前に「
    anon
    」を含みます。ただし、暗号スイートはクライアントとサーバで共通であり、両方で有効です。
  • データを暗号化しない暗号スイートを指定します。
    例:
    introscope.enterprisemanager.ciphersuites.channel2=SSL_RSA_WITH_NULL_SHA
  • protocols プロパティを、JVM がサポートする承認済みのプロトコルに設定します。デフォルトのプロパティ設定では、サーバで SSLv3 を使用した接続が受け入れられないようにします。
    introscope.enterprisemanager.protocols.channel2=TLSv1.2,TLSv1.1,TLSv1
例: セキュアな通信チャネルとセキュアでない通信チャネルの有効化
Enterprise Manager を SSL を使うように設定するには、セキュアな通信チャネルを有効にするように、
IntroscopeEnterpriseManager.properties
を設定します。このセキュアなチャネルは、デフォルトのセキュアでないチャネルに加えて設定できます。
: MOM とコレクタの間、または MOM と WebView の間の SSL 通信の設定はサポートされていません。
以下の設定例では、ポート 5001 にデフォルトのセキュアでないリスナを設定し、ポート 5443 にセキュアなリスナを設定します。
# The enabled communication channels. introscope.enterprisemanager.enabled.channels=channel1, channel2 # The default communication channel. introscope.enterprisemanager.serversocketfactory.channel1=com.wily.isengard.postofficehub.link.net.server.DefaultServerSocketFactory introscope.enterprisemanager.port.channel1=5001 # The secure communication channel. introscope.enterprisemanager.serversocketfactory.channel2=com.wily.isengard.postofficehub.link.net.server.SSLServerSocketFactory introscope.enterprisemanager.port.channel2=5443 # Location of a keystore containing certificates for authenticating the Enterprise Manager to clients. # Either an absolute path or a path relative to the config directory. # On Windows, backslashes must be escaped. For example: # introscope.enterprisemanager.keystore.channel1=C:\\Introscope\\config\\internal\\server\\keystore introscope.enterprisemanager.keystore.channel2=internal/server/keystore # The password for the KeyStore. # Set the following property to true to enable encryption. introscope.enterprisemanager.keypassword.channel2 # Once introscope.enterprisemanager.keypassword.channel2 is encrypted, # this property is automatically set to false. # # To change the existing password, enter the new password and set this property to true. # Note: If this property is set to true and the password is not changed, the existing encrypted password will be encrypted again. # If password field for a new channel is configured, add the corresponding # plaintextpassword field and set it to true to enable encryption. introscope.enterprisemanager.keypassword.channel2.plaintextpassword=true introscope.enterprisemanager.keypassword.channel2=password # Location of a TrustStore containing trusted client certificates. # Either an absolute path or a path relative to the config directory. # On Windows, backslashes must be escaped. For example: # introscope.enterprisemanager.truststore.channel1=C:\\Introscope\\config\\internal\\server\\keystore # A TrustStore is only needed if client authentication is required. # Set this property to true to enable encryption of introscope.enterprisemanager.trustpassword.channel2 # Once introscope.enterprisemanager.trustpassword.channel2 is encrypted, # this property is automatically set to false. # # To change the existing password, enter the new password and set this property to true. # Note: If this property is set to true and the password is not changed, the existing encrypted password will be encrypted again. # If password field for a new channel is configured, add the corresponding # plaintextpassword field and set it to true to enable encryption. # introscope.enterprisemanager.trustpassword.channel2.plaintextpassword=false # The password for the TrustStore #introscope.enterprisemanager.trustpassword.channel2=password # If no TrustStore is specified, the Enterprise Manager trusts all client certificates.
ファイアウォールを越えた Enterprise Manager との接続
HTTP トンネリングはデフォルトで有効になっています。トンネリングにより、あるネットワークのデータをほかのネットワーク接続経由で送信できるようになります。
以下の手順に従います。
  1. Workstation では、Enterprise Manager の組み込み Web サーバのポートへの接続にトンネリング転送を使用します。
    デフォルト
    : 8081
  2. <EM_Home>/config
    ディレクトリに移動します。
  3. テキスト エディタで
    IntroscopeEnterpriseManager.properties
    ファイルを開きます。
  4. introscope.enterprisemanager.webserver.port
    プロパティを必要な Web サーバ ポートの値に変更します。
  5. ファイルを保存して閉じます。
  6. Web サーバを再起動します。
Enterprise Manager の WebView 通信の設定(SSL)
Enterprise Manager Web サーバは、SSL の HTTP トンネリングをサポートしています。このセキュリティ対策は、Jetty Web サーバからアクセスされる
em-jetty-config.xml
ファイルによって実装されます。この Web サーバは、Enterprise Manager に組み込まれています。
Enterprise Manager は起動時に
<EM_Home>/config
ディレクトリからデフォルトの
em-jetty-config.xml
ファイルをロードします。このファイルは、ポート 8444 にセキュアなリスナを設定します。このセキュアなリスナによって、Workstation、WebView、およびエージェントが Enterprise Manager Web サーバ経由で HTTPS トンネルを使用して Enterprise Manager にアクセスできます。
introscope.enterprisemanager.webserver.port
プロパティは、
IntroscopeEnterpriseManager.properties
ファイル内にある
 introscope.enterprisemanager.webserver.port property
と連携して動作します。Enterprise Manager は、Enterprise Manager が Jetty 設定ファイルをロードしたときに、
introscope.enterprisemanager.webserver.port
プロパティで定義されているセキュアでないリスナを作成しません。ただし、Jetty 設定ファイルにはセキュアでないリスナを設定できます。
IntroscopeWebView.properties
ファイル内の
introscope.webview.enterprisemanager.webserver.tcp.port
および
introscope.webview.enterprisemanager.rest.base
を(http から https に)変更します。
警告:
em-jetty-config.xml
ファイル内の
introscope.enterprisemanager.webserver.jetty.configurationFile
プロパティおよびセキュアでないリスナ ポートの両方のコメント化を解除すると、CA APM のセキュリティに問題が発生することがあります。これらの設定を一緒に行う前に、組織のアプリケーション セキュリティ担当者に通知してください。
以下の手順に従います。
  1. <EM_Home>/config
    ディレクトリに移動します。
  2. テキスト エディタで
    em-jetty-config.xml
    ファイルを開きます。
  3. introscope.enterprisemanager.webserver.jetty.configurationFile
    プロパティのコメント化を解除して、ファイルをアクティブにします。
  4. Jetty ファイル内の Web サーバ プロパティを必要な値に変更します。
  5. em-jetty-config.xml
    ファイルで HTTPS が有効であることを確認します。ポート属性が、次のように設定されていることを確認します。
    <Set name="port">8444</Set>
  6. (オプション)
    IntroscopeWebview.properties
    ファイル内の URL で、HTTPS プロトコルを指定します。以下のように、
    EM_HOST
    を MOM のホスト名または IP アドレスに設定します。
    introscope.webview.enterprisemanager.rest.base=https://{EM_HOST}:8444/apm/appmap
  7. ファイルを保存して閉じます。
  8. Web サーバを再起動します。
注:
em-jetty-config.xml
ファイルの場所と名前を設定するには、
IntroscopeEnterpriseManager.properties
ファイル内の
introscope.enterprisemanager.webserver.jetty.configurationFile
プロパティを使用します。
SSL 用の Jetty 設定オプション
重要: 
<EM_Home>/config
ディレクトリにあるデフォルトの Jetty 設定ファイル(
em-jetty-config.xml
)を使用して、SSL のコンポーネントの多くを変更することができます。例:
  • HTTPS ポートをデフォルトの 8444 から変更するには、port 属性の値を変更します。
    Example: <Set name="port">8444</Set>
  • デフォルトでは、SSL リスナは
    /internal/server/keystore
    キーストア パスを使用するように設定されています。これは、
    /config
    ディレクトリに対する相対パスです。このキーストアには、信頼されない自己署名証明書が入っています。キーストアは、認識している認証局(CA)の証明書が含まれるキーストアと置き換えることができます。
  • デフォルトのキーストア パスワードは
    password
    です。
    em-jetty-config.xml
    および
    webview-jetty-config.xml
    内のクリア テキスト パスワードはデフォルトでは難読化されます。難読化されたパスワードは、
    OBF:
    で始まります。
    OBF:
    を取り除くことで、プレーン テキスト パスワードになります。SSL の設定の詳細については、https://wiki.eclipse.org/Jetty/Howto/Configure_SSL を参照してください。
  • デフォルトでは、SSL は自己署名証明書を受け入れるように設定されます。SSL は、クライアントの URL 内のホスト名がデジタル証明書のホスト名に一致することを検証しません。これは、スタンドアロン Enterprise Manager のみをテストするのに十分です。この設定により、デフォルトのキーストアの信頼されていない証明書を使用して、SSL がデフォルトで機能することができます。安全性の高い認証を必要とする場合は、信頼できる証明書を含むキーストアを作成します。
    クラスタまたは MOM とコレクタの場合には、自己署名証明書は有効ではありません。Enterprise Manager もクライアントであり、正しいホスト名を含む有効な証明書または信頼された自己署名証明書が必要です。有効な証明書を使用する必要があります。テスト目的では、自己署名証明書を使用できますが、ホスト名/ドメインの証明書を生成する必要があります。グローバル Java トラスト ストアに証明書を追加します。クライアントとしての Enteprise Manager では、信頼できるサーバの検証にグローバル java トラスト ストアが使用されます。
    注:
    実稼働環境では、承認された認証機関からの有効な証明書が必要です。
    その後、XML 内の以下の属性を設定し、デフォルトのキーストアを独自のキーストアに置き換えます。
    <Set name="validateCertificates">true</Set> <Set name="verifyHostnames">true</Set> <Set name="keystore"><SystemProperty name="introscope.config" default="./config" />/internal/server/keystore</Set> <Set name="password">password</Set>
  • 次のように、クライアント認証を要求するクライアント証明書を含むトラストストアを作成することもできます。
    <Set name="needClientAuth">true</Set> <Set name="truststore"><SystemProperty name="introscope.config" default="./config" />/internal/server/keystore</Set> <Set name="trustPassword">password</Set>
  • クライアント認証が必要な場合は、証明書を含むキーストアを使って、エージェントと Workstation を設定します。Enterprise Manager Web サーバは、この証明書を信頼する必要があります。
    有効な暗号スイートを設定するには、
    cipherSuites 
    属性に暗号スイートのリストを設定します。
    <Set name="cipherSuites"> <Array type="java.lang.String"> <Item>SSL_DH_anon_WITH_RC4_128_MD5</Item> </Array> </Set>
    SSL を使用するには、エージェントと Workstation の暗号スイートが有効で、Enterprise Manager と共通のものである必要があります。以下のアクションに対して、有効な暗号スイートを制限することができます。
    • 弱い暗号スイートの脆弱性の防止
    • 匿名接続の許可
    • データの非暗号化
  • 承認されるプロトコルのリストをカスタマイズする必要がある場合は、以下の例で示されているように、
    em-jetty-config.xml 
    および
    webview-jetty-config.xml
    ファイルで
    <Item>
    タグにプロトコルを定義します。
    <Set name="protocols">
    <Array type="java.lang.String">
    <Item>TLSv1.2</Item>
    <Item>TLSv1.1</Item>
    <Item>TLSv1</Item> 
    </Array>
    </Set>
  • Enterprise Manager は
    maxThreads
    プロパティを使用して、Enterprise Manager が処理できる HTTPS エージェント接続の数を制限します。十分なスレッドがない場合、Enterprise Manager は、接続されたエージェントやエージェントからのプロセス メトリックを認識しません。
  • HTTPS を使用する場合、Enterprise Manager は
    maxThreads
    プロパティで設定されたエージェント数のみを処理します。許可されているエージェント接続の数は、
    apm-events-thresholds-config.xml
    ファイルの
    introscope.enterprisemanager.agent.connection.limit
    プロパティで設定されます。
    maxThreads
    の値が
    introscope.enterprisemanager.agent.connection.limit value
    の値以上であることを確認します。HTTPS を使用して接続するためのスレッドが不足している場合、一部のエージェントはクライアントに表示されないか、またはメトリックをレポートしません。
CEM コンソールのデフォルト要求ヘッダ サイズのリセット
CEM コンソールへのアクセス時に空白のページが表示されることがあるような場合は、要求ヘッダ サイズ制限のデフォルト値(4 KB)をリセットします。ヘッダ サイズ制限のリセットは、Jetty 設定ファイルで行います。
以下の手順に従います。
  1. MOM 上の
    <EM_Home>/config
    ディレクトリに移動し、
    em-jetty-config.xml
    ファイルをテキスト エディタで開きます。
  2. 以下の行を含むセクションを見つけます。
    <New class="com.wily.webserver.NoNPESocketConnector">
  3. NoNPESocketConnector
    プロパティを以下の値に変更します。
    <set name="headerBufferSize">8192</Set>" <Set name="RequestBufferSize">16384</Set>"
  4. ファイルを保存して閉じます。
  5. 各 MOM およびコレクタ上の
    IntroscopeEnterpriseManager.properties
    ファイルの場所に移動します。
  6. このプロパティで、以下の行のコメントを外します。
    introscope.enterprisemanager.webserver.jetty.configurationFile=em-jetty-config.xml
  7. ファイルを保存して閉じます。
  8. Web サーバを再起動します。