このページでは、SSL を使用してコントローラに接続するように AppDynamics マシンエージェントを設定する方法について説明します。SaaS コントローラを使用しているか、SSL を使用するようにオンプレミスコントローラを設定していることを前提としています。 

マシンエージェントは、SSL モード時の SSL 信頼チェーンの拡張および強制実行をサポートしています。

SSL 設定の計画

次の情報を収集します。

  • コントローラの SSL ポート:
    • SaaS コントローラの場合:SSL ポートは 443 です
    • オンプレミスコントローラの場合:デフォルトの SSL ポートは 8181 ですが、別のポートで SSL をリッスンするようにコントローラを構成することもできます
  • コントローラの SSL 証明書の署名メソッド。
    • パブリック証明機関(CA)が証明書に署名。DigiCert、Verisign、Thawteおよびその他の商用CAなど。
    • 組織内部のCAが署名した証明書。一部の企業では内部の証明機関を保持し、その内部CAがドメイン内のトラストと暗号化を管理します。
    • コントローラでは、自己署名証明書が使用されます。

コントローラのSSL証明書の信頼性を確立

マシンエージェントと AppDynamics コントローラとの間で信頼関係を確立するには、コントローラの証明書に署名した機関のルート証明書を含むエージェントトラストストアを作成する必要があります。

  1. 次のいずれかのルート証明書を取得します。
    • AppDynamics SaaS コントローラの DigiCert Global Root CA
    • オンプレミスコントローラの証明書に署名したパブリック認証局(CA)のルート証明書
    • オンプレミスコントローラのコントローラ証明書に署名した内部 CA のルート証明書

  2. Java keytool コマンドを実行して、エージェントトラストストアを作成します。

    keytool -import -alias rootCA -file <root_certificate_file_name> -keystore cacerts.jks -storepass <truststore_password>

    次に例を示します。

    keytool -import -alias rootCA -file /usr/home/appdynamics/DigicertGlobalRootCA.pem -keystore cacerts.jks -storepass MySecurePassnword

    トラストストアのパスワードをメモします。これは、後でマシンエージェントを設定するために必要になります。

  3. エージェントのトラストストアをエージェント構成ディレクトリにインストールします。

    <machine_agent_home>/conf/

マシンエージェントのトラストストアの保護

AppDynamics では、マシンエージェントのトラストストアの改ざんを防ぐため以下の安全対策を行うことを推奨しています。

  • ファイルシステムの権限を通じたtruststoreファイルの保護。

    • あらゆるユーザにエージェントトラストストアの読み取りを許可

    • 権限のあるユーザがトラストストアを所有

    • 指定された権限のあるユーザのみにトラストストアの書き込みを制限

  • controller-info 構成ファイルを保護して、読み取りはエージェントのランタイムユーザのみ、書き込みは権限のあるユーザのみに設定。

<machine_agent_home>/conf/controller-info.xml

マシンエージェントの SSL の有効化

  1. controller-info.xml で次のシステムプロパティを設定します。<machine_agent_home>/conf/controller-info.xml。各プロパティの詳細については、「マシンエージェントの設定プロパティ」を参照してください。
    • コントローラホスト:コントローラ用に設定する証明書の共通名またはサブジェクト代替名(SAN)と同じにする必要があります。

      <controller-host>common_name_in_certificate.com</controller-host>

    • コントローラポート:コントローラの SSL ポート。AppDynamics SaaS の場合は 443 です。

      <controller-port>443</controller-port>

    • コントローラの SSL の有効化 true。

      <controller-ssl-enabled>true</controller-ssl-enabled>

    • コントローラの SSL のパスワード:エージェントトラストストアのプレーンテキストパスワード。

      <controller-keystore-password>MySecurePassword</controller-keystore-password>

      Secure Credential Store を有効にした場合、ここで入力するパスワードは暗号化されます。「エージェントの認証情報を暗号化する」を参照してください。

    • コントローラキーストアのファイル名:<machine_agent home>/conf からのエージェントトラストストアの相対パス。デフォルトの <machine_agent_home>/conf/cacerts.jks 以外のトラストストアを使用する場合は必須です。

      <controller-keystore-filename>../conf/cacerts.jks</controller-keystore-filename>

      コントローラポートを指定し、マシンエージェント起動スクリプトでコントローラ用 SSL を有効にできますが、controller-info.xml ファイルでトラストストアのパスワードとファイル名を指定する必要があります。

      JDK 9 以降(マシンエージェントにバンドルされた JRE またはスタンドアロン JDK/JRE)で、java.security ファイルのデフォルトのキーストアタイプが JKS から PKCS12 に変更されました。

      JKS トラストストアが使用され、<controller-keystore-password> が指定されていない場合、エージェントは JKS トラストストアを使用します。PKCS12 トラストストアが使用され、<controller-keystore-password> が指定されていない場合、エージェントは PKCS12 トラストストアを使用しません。

      PKCS12 トラストストアを使用する場合、AppDynamics では <controller-keystore-password> を指定することが推奨されています。引き続き JKS ベースのトラストストアを使用する場合は、PKCS12 トラストストアを JKS 形式に変換できます。

  2. マシンエージェントを再起動します。

SSL と Secure Credential Store の暗号化を有効化した controller-info.xml のサンプル

<?xml version="1.0" encoding="UTF-8"?>
<controller-info>
	<controller-host>mycompany.saas.appdynamics.com</controller-host>
	<controller-port>443</controller-port>
	<controller-ssl-enabled>true</controller-ssl-enabled>
    <!-- Encrypted Controller keystore / agent trust store password -->
	<controller-keystore-password>Tw49bd0hdCMBoQ5pfMMuYA/cA5B4pouVPkv48ovRm6c=</controller-keystore-password>
	<controller-keystore-filename>../../conf/cacerts.jks</controller-keystore-filename>
	...
    <!-- Secure Credential Store configuration -->
    <!-- Enable the Secure Credential Store -->
    <use-encrypted-credentials>true</use-encrypted-credentials>
    <!-- Path to they secure credential keystore -->
    <credential-store-filename>/opt/appdynamics/secretKeyStore</credential-store-filename>
    <!-- Obfuscated secure credential keystore password -->
    <credential-store-password>n/8GvAZsKk4gM3Z6g+XQ1w==</credential-store-password>
</controller-info>
CODE

Keystore証明書抽出ユーティリティ

キーストア証明書抽出ユーティリティは、コントローラの Java キーストアから証明書をエクスポートして、エージェントトラストストアに書き込みます。コントローラのエージェント ディストリビューションでこのユーティリティを実行できます。

<controller_home>/appserver/glassfish/domains/domain1/appagent
CODE
  1. kr.jar を実行し、次のパラメータを含めます。
    • コントローラのKeystoreへの完全なパス

      <controller_home>/appserver/glassfish/domains/domain1/config/keystore.jks
      CODE
    • トラストストア出力ファイル名。デフォルトでは、マシンエージェントは cacerts.jks を検索します。
    • コントローラの証明書のパスワード(デフォルトで「changeit」)。パスワードを含めない場合、エクストラクタはパスワード "changeit" を出力されたトラストストアに適用します。

      java -jar kr.jar <controller_home>/appserver/glassfish/domains/domain1/config/keystore.jks cacerts.jks <controller_certificate_password>
      CODE
  2. エージェントのトラストストアをエージェント構成ディレクトリにインストールします。

    <machine_agent_home>/conf/