Download PDF
Download page Javaエージェント用SSLの有効化.
Javaエージェント用SSLの有効化
このページでは、SSL を使用して Java エージェントと次の AppDynamics コンポーネント間の通信を保護する方法について説明します。
- AppDynamics コントローラ:SSL を介してコントローラと通信するようにエージェントを構成する前に、SaaS コントローラを使用するか、オンプレミスコントローラを構成して SSL を使用する必要があります。
- AppDynamics 分析エージェント:SSL を介して分析エージェントと通信するようにエージェントを構成する前に、「Analytics エージェントの SSL の有効化」で説明されている設定を行う必要があります。
Javaエージェント は、SSLモード時のSSLトラストチェーンの拡張および強制実行をサポートしています。
SSL構成詳細の収集
SSL を介した Java エージェントの通信を保護するため、コントローラまたは分析エージェントの次の SSL 構成情報が必要になります。
- SSL ポート:
- SaaS コントローラの場合、SSL ポートは 443 です。
- オンプレミスコントローラの場合、デフォルトの SSL ポートは 8181 ですが、別のポートで SSL をリッスンするようにコントローラを構成することもできます。
ad.dw.http.port
プロパティを使用して、Analytics エージェント用ポートを構成する。詳細については、Analytics エージェントの SSL の有効化を参照してください。
- 証明書の署名メソッド。
- パブリック証明機関(CA)が証明書に署名。DigiCert、Verisign、Thawteおよびその他の商用CAなど。
- 組織内部のCAが署名した証明書。一部の企業では内部の証明機関を保持し、その内部CAがドメイン内のトラストと暗号化を管理します。
- コントローラまたはAnalyticsエージェントは自己署名証明書を使用。
コントローラのSSL証明書の信頼性を確立
Java エージェントと AppDynamics コントローラとの間で信頼関係を確立するには、コントローラの証明書に署名した機関のルート証明書をエージェントトラストストアにインポートする必要があります。
オンプレミスコントローラを自己署名証明書で保護した場合、エージェントのトラストストアを作成する手順については「Keystore 証明書抽出ユーティリティ」を参照してください。
- コントローラの証明書に署名した機関のルート証明書を取得する。
SaaS コントローラのみを展開する場合:https://www.digicert.com/digicert-root-certificates.htm で「DigiCert Global Root CA」証明書をダウンロードできます。
ホスト証明書の有効期間は非常に短く、頻繁に変更されるため、ルート CA 証明書のみを Java SSL トラストストアにインポートする必要があります。ルート CA 証明書を信頼すると、ホスト証明書が期限切れ前に変更された場合でも、コントローラへの接続が中断されることはありません。
Java
keytool
コマンドを実行し、ルート証明書をインポートする。コマンドはバージョン管理されたエージェント構成ディレクトリにキーストアを作成します(存在しない場合)。keytool -import -alias rootCA -file <root_certificate_file_name> -keystore <agent_home>/<version_number>/conf/cacerts.jks -storepass <truststore_password>
CODE例:
keytool -import -alias ControllerRootCA -file /usr/home/appdynamics/DigicertGlobalRootCA.pem -keystore /usr/local/appagent/4.3.0.0/conf/cacerts.jks -storepass MySecurePassword
CODEtruststoreパスワードは保管しておいてください。Javaエージェントの構成に必要となります。
Javaエージェントとコントローラ間のSSLを有効にする
バージョン管理された controller-info.xml
でシステムプロパティ(<agent_home>/<version_number>/conf/controller-info.xml
)を設定します。各プロパティの詳細については、「SSL 構成プロパティ」を参照してください。
コントローラポート:コントローラの SSL ポート。AppDynamics SaaSの場合は443。
<controller-port>443</controller-port>
コントローラの SSL の有効化:true。
<controller-ssl-enabled>true</controller-ssl-enabled>
コントローラキーストアのパスワード:エージェントトラストストアのプレーンテキストパスワード。
<controller-keystore-password>MySecurePassword</controller-keystore-password>
Secure Credential Store を有効にしている場合、パスワードを暗号化して入力。詳細については、エージェントの認証情報を暗号化するを参照してください。
コントローラキーストアのファイル名:
<agent home>/<version>/conf
を基準にしたエージェントトラストストアの相対パス P。デフォルトの<agent_home>/<version_number>/conf/cacerts.jks
以外のトラストストアを使用する場合は必須です。<controller-keystore-filename>../../conf/cacerts.jks</controller-keystore-filename>
コントローラポートを指定し、JVM 起動スクリプトでコントローラ用 SSL を有効化できますが、バージョン管理された c
ontroller-info.xml
ファイルでトラストストアのパスワードとファイル名を指定する必要があります。
構成の変更が完了したら、JVMを再起動する。
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>
AnalyticsエージェントのSSL証明書の信頼性を確立
JavaエージェントとAnalyticsエージェントとの間で信頼関係を確立するには、Analyticsエージェントの証明書に署名した機関のルート証明書をエージェントトラストストアにインポートする必要があります。
- Analyticsエージェントの証明書に署名した機関のルート証明書を取得する。
Java
keytool
コマンドを実行して、ルート証明書を JRE トラストストアにインポートする。keytool -import -trustcacerts -alias analytics-agent -file <root_certificate_file_name> -keystore <agent_home>/<version_number>/conf/cacerts.jks
CODE例:
keytool -import -trustcacerts -alias analytics-agent -file /usr/home/appdynamics/MyAnalyticsCert.crt -keystore /usr/local/appagent/4.3.0.0/conf/cacerts.jks
CODE
Analytics エージェントを使用しないで Analytics の信頼性の確立する
専用の分析エージェントではなく、Java エージェント 4.5.16 以降を使用してトランザクション分析データを取得できます。この導入モデルでは、Java エージェントがイベントサービスと直接通信します。
Java エージェントにカスタム信頼ストアを使用する場合、Analytics エージェントなしでトランザクション分析を有効にするには、イベントサービスとの信頼を確立する必要があります。次のコマンド例は、Java エージェント信頼ストアにイベントサービス証明書をインポートする方法を示しています。
署名済み証明書を使用する場合:
keytool -import -trustcacerts -v -alias events_service -file /path/to/CA-cert.txt -keystore cacerts.jks
CODE自己署名証明書を使用する場合:
keytool -import -v -alias events_service -file events_service.crt -keystore cacerts.jks
CODE
プライベート証明書の信頼を確立しない場合、Java エージェントを使用してトランザクション分析データを取得することはできません。トランザクション分析用に設定したアプリケーションおよびビジネストランザクションは、Java エージェントがイベントサービスと通信できない場合は有効にできません。
この動作をオーバーライドするには、-Dappdynamics.force.default.ssl.certificate.validation
プロパティを使用します。詳細については、「Java エージェント構成プロパティ」を参照してください。
Java エージェントと分析エージェント間の SSL を有効にする
Java エージェントが SSL を介して Analytics エージェントにアクセスできるようにするには、JVM の appdynamics.analytics.agent.url
システムプロパティを構成します。
- HTTPSプロトコルを使用する。
Analytics エージェントの SSL ポートを使用する。このポートは、Analytics エージェントの
ad.dw.http.port
プロパティと同じ値にする必要があります。詳細については、Analytics エージェントの SSL の有効化を参照してください。-Dappdynamics.analytics.agent.url=https://<analytics_agent_host>:<analytics_agent_port>/v2/sinks/bt
CODE次に例を示します。
java -javaagent:/home/appdynamics/agent/javaagent.jar -Dappdynamics.controller.hostName=mycontroller.example.com -Dappdynamics.controller.port=8090 -Dappdynamics.analytics.agent.url=https://my.analytics.host.example.com:9090/v2/sinks/bt -Dappdynamics.agent.applicationName=ACMEOnline -Dappdynamics.agent.tierName=Inventory -Dappdynamics.agent.nodeName=Inventory1 ACMEOnline.jar
CODE構成の変更が完了したら、JVMを再起動する。
JavaエージェントTruststoreの保護
Java エージェント Truststore の改ざんを防ぐには、次の手順を実行する必要があります。
- ファイルシステムの権限を通じたtruststoreファイルの保護。
あらゆるユーザーにエージェントtruststoreの読み取りを許可。
権限のあるユーザーがtruststoreを所有。
指定された権限のあるユーザーのみにtruststoreの書き込みを制限。
エージェント構成ファイルを保護して、読み取りはエージェントのランタイムユーザーのみ、書き込みは権限のあるユーザーのみに設定。
バージョン管理された構成ファイル:
<agent_home>/<version_number>/conf/controller-info.xml
。グローバル構成ファイル:
<agent_home>/conf/controller-info.xml
。
Keystore 証明書抽出ユーティリティ
Keystore 証明書抽出ユーティリティは、コントローラのJava Keystoreから証明書をエクスポートしてエージェントのtruststoreに書き込みます。次の場所にインストールされます。
<agent_home>/<version_number>/utils/keystorereader/kr.jar
コントローラKeystoreがエージェントマシンにコピーされるのを防ぐには、コントローラサーバーからこのユーティリティを実行します。次の場所でコントローラのエージェント ディストリビューションにアクセスしてください。
<controller_home>/appserver/glassfish/domains/domain1/appagent
kr.jar
を実行し、次のパラメータを渡します。コントローラのKeystoreへの完全なパス
<controller_home>/appserver/glassfish/domains/domain1/config/keystore.jks
CODE- トラストストア出力ファイル名。デフォルトでは、エージェントは、エージェントホームの <
agent_home>/<version>/conf
ディレクトリにあるcacerts.jks
という名前の Java トラストストアファイルを検索します。 コントローラの証明書のパスワード(デフォルトで「changeit」)。パスワードを含まない場合、エクストラクターはパスワード「changeit」を出力されたtruststoreに適用。
/<full path to application JRE>/bin/java -jar kr.jar <controller_home>/appserver/glassfish/domains/domain1/config/keystore.jks cacerts.jks <controller_certificate_password>
CODE
エージェントのtruststoreをバージョン管理されたエージェント構成ディレクトリにインストール。
<agent_home>/<version_number>/conf/
CODE
SSL問題の解決
TLS/SSL のバージョンで問題が発生した場合は、「Java エージェントとコントローラ間の SSL 互換性」および「AppDynamics エージェント SSL プロトコル」を参照してください。