Related pages: |
This page describes how to configure the Machine Agent to connect to the Controller using SSL. It assumes that you use a SaaS Controller or have configured the on-premises Controller to use SSL.
The Machine Agent supports extending and enforcing the SSL trust chain when in SSL mode.
Gather this information:
To establish trust between the Machine Agent and the Controller, you must create an agent truststore that contains the root certificate for the authority that signed the Controller's certificate.
For SaaS Controller deployments only: You can download the DigiCert root certificates from https://www.digicert.com/digicert-root-certificates.htm and the IdenTrust root certificate from https://www.identrust.com/identrust-commercial-root-ca-1. Ensure to include at least the following certificates:
Run the Java keytool
command to create the Agent truststore:
keytool -import -alias rootCA -file <root_certificate_file_name> -keystore cacerts.jks -storepass <truststore_password> |
For example:
keytool -import -alias rootCA -file /usr/home/appdynamics/DigicertGlobalRootCA.pem -keystore cacerts.jks -storepass MySecurePassnword |
Note the truststore password; you will need this later to configure the Machine Agent. |
Install the Agent truststore to the Agent configuration directory:
<machine_agent_home>/conf/ |
We recommend you take the following security measures to prevent tampering with the Machine Agent truststore:
Secure the truststore file through filesystem permissions:
Make the Agent truststore readable by any user
Make the truststore owned by a privileged user
Make the truststore writable only by the specified privileged user
Secure the controller-info
configuration file so that it is only readable by the Agent runtime user and only writable by a privileged user:
<machine_agent_home>/conf/controller-info.xml
controller-info.xml
: <machine_agent_home>/conf/controller-info.xml
. See Machine Agent Configuration Properties for full details on each property.Controller Host: Should be the same as either the Common Name or the Subject Alternative Name (SAN) in the certificate configured for the Controller.
<controller-host>common_name_in_certificate.com</controller-host>
Controller Port: The SSL port for the Controller. It is 443 for .
<controller-port>443</controller-port>
Controller SSL Enabled: true
<controller-ssl-enabled>true</controller-ssl-enabled>
Controller SSL Password: The plain text password for the Agent truststore.
<controller-keystore-password>MySecurePassword</controller-keystore-password>
If you have enabled the Secure Credential Store, encrypt the password you enter here. See Encrypt Agent Credentials.
Controller Keystore Filename: The path of the Agent truststore relative to <machine_agent home>/conf
. This is required if you use a truststore other than the default <machine_agent_home>/conf/cacerts.jks
.
<controller-keystore-filename>../conf/cacerts.jks</controller-keystore-filename>
You can specify the Controller port and enable SSL for the Controller in the Machine Agent startup script, but you must specify the truststore password and filename in the |
In JDK >= 9 (either JRE bundled with Machine Agent or a standalone JDK/JRE), the default keystore type in the If a JKS truststore is used and the If you are using a PKCS12 truststore, we recommend that that you provide the |
<?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> |
The Keystore Certificate Extractor Utility exports certificates from the Controller's Java keystore and writes them to an Agent truststore. You can run this utility with the Agent distribution on the Controller:
<controller_home>/appserver/glassfish/domains/domain1/appagent |
kr.jar
and include the following parameters:The full path to the Controller's keystore:
<controller_home>/appserver/glassfish/domains/domain1/config/keystore.jks |
cacerts.jks
.The password for the Controller's certificate, which defaults to "changeit". If you do not include a password, the extractor applies the password "changeit" to the output truststore.
java -jar kr.jar <controller_home>/appserver/glassfish/domains/domain1/config/keystore.jks cacerts.jks <controller_certificate_password> |
Install the Agent trust store to the Agent configuration directory:
<machine_agent_home>/conf/ |