自己署名キーストアファイルを使用する Enterprise Console では、組み込みの HTTPS がサポートされています。Enterprise Console は、新規インストールまたはアップグレード時の選択に基づいて、HTTP または HTTPS のいずれかをサポートします。HTTPS から HTTP に戻るか、またはその逆に元に戻すように、Enterprise Console をいつでも再設定することができます。

Enterprise ConsoleのSSLと証明書について

Enterprise Console には、HTTPS クライアント用として、標準的な証明書が含まれる Mozilla の最新のトラストストアである cacerts.jks がパッケージされています。Enterprise Console は、自己署名証明書が含まれる keystore.jks ファイルを作成します。この証明書はインストール時またはアップグレード時に cacerts.jks にインポートされます。

実稼働環境での使用においては、AppDynamicsは自己署名証明書をサードパーティのCAまたは独自の内部CAにより署名された証明書に置き換えることを強く推奨します。

このページでは以下について説明しています。

  • Enterprise Consoleのインストールまたはアップグレード時にHTTPSを有効にする方法
  • 証明書を署名済みのものに更新する方法
  • キーストアの認証情報のカスタマイズ方法 

デフォルトのキーストアから既存のアーティファクトを初めてエクスポートし、それを独自のキーストアにインポートする場合を除いては、キーストアの内容をすべて置き換えることは推奨されません。

自己署名証明書をご自身で作成することも推奨しません。

セキュリティを実装する正確な手順は、通常、組織のセキュリティポリシーにより異なります。たとえば、組織のドメインに使用するワイルドカード証明書など、使用する署名付き証明書が組織にすでに存在する場合は、Enterprise Console の update-certificate コマンドを使用してキーストアにインポートできます。それ以外の場合は、証明書署名要求とともに新しい証明書を取得できます。

開始前

Linuxマシンでは、Enterprise Consoleはcurlを使用してアプリケーションのURLの、レスポンスの状態を確認します。そのためSSLを動作させるためにはNSSパッケージの最新版が必要になります。

たとえば、次のコマンドでCentOSのNSSパッケージを最新版に更新できます。

yum update nss
更新手順やNSSパッケージ名はご使用のLinuxオペレーティングシステムによって異なる場合があります。

Enterprise Consoleの新規インストール時におけるHTTPSの有効化

Enterprise Consoleのインストール時にHTTPSを有効にするには、優先する接続タイプとしてHTTPSを選択します。

  1. 次の手順に従って、Enterprise Console をインストールします。
    • GUIでのインストールの場合は、HTTPSのチェックボックスをクリックします。

      このチェックボックスをオフにしている場合、インストール時のデフォルト設定はHTTPになります。

      Enterprise Consolによって自己署名証明書が作成され、HTTPS接続で使用されます。

    • サイレントインストールの場合、次のパラメータを使用してプラットフォーム管理者応答用 varfile を編集します。

      platformAdmin.useHttps$Boolean=true
      CODE

      これにより HTTPS 接続が有効化されます。これはウィザードのインストールオプションで [Enable Https Connection] をオンにするのと同じです。パラメータを false に設定すると HTTP が使用されます。

  2. オプション:Enterprise Console は自己署名証明書を作成し、それを HTTPS 接続に使用します。この自己署名証明書はサードパーティのCAが署名した証明書に置き換えることができます。「署名済み証明書への更新」を参照してください。

これでEnterprise ConsoleによりPlatformAdminApplication.yml(Dropwizard構成ファイル)でHTTPSプロトコルが構成され、HTTPは無効化されます。詳細については、「ドロップウィザード設定リファレンス」を参照してください。

Example Enterprise Console HTTPS connector configuration

server:
  type: simple
  connector:
    type: encrypted-https # encrypted-https is a customized HTTPS connector type in Enterprise Console, with keystore password encrypted.
    port: 9191 # DO NOT REMOVE alternatives are 8080
    keyStorePath: /appdynamics/platform-admin/conf/keys/keystore.jks
    keyStorePassword: s_-001-12-v/yKyIweuGQ=iLpBEDTqfP7vj++WP+MKEg==
    trustStorePath: /appdynamics/platform-admin/conf/keys/cacerts.jks
    trustStorePassword: s_-001-12-hdLwJEOZbns=kDmS/pLvq2A43iCWLJEcTg==
    certAlias: ec-server # DO NOT change cert alias name in keystore files.
    validateCerts: false
    supportedProtocols: [TLSv1.2]
    bindHost: 0.0.0.0
  applicationContextPath: /
Enterprise Console では、構成ファイル内のプレーンテキストのパスワードはすべて暗号化されます。

Enterprise Consoleのアップグレード時におけるHTTPSの有効化

バージョン4.4.3から4.5または4.5以降へのアップグレード時に、HTTPからHTTPSに切り替えることができます。既存のEnterprise Consoleインスタンスについては、Enterprise Consoleアプリケーションを再インストールすることでHTTPSを有効にすることもできます。

  1. 次の手順に従って、Enterprise Console をアップグレードします。
    1. プラットフォーム管理者応答用varfileを、以下のように変更します。

      platformAdmin.useHttps$Boolean=true
      CODE
  2. アップグレードを完了させます。
  3. オプション:自己署名証明書は Enterprise Console によって作成され、SSL は新規インストールの場合と同様に構成されます。この自己署名証明書はサードパーティの CA が署名した証明書に置き換えることができます。署名済み証明書への更新を参照してください。

HTTPSをサポートするEnterprise Consoleを今後リリースされるバージョンにアップグレードする際、Enterprise Consoleには以下のような決まりごとがあります。

  • Upgrades with a self-signed certificate (the Enterprise Console installed certificate):通常、Enterprise Console は、新しい自己署名証明書を使用して新しい keystore.jks を再作成し、<EC_installationDir>/conf/keys フォルダの新しい自己署名証明書を使用して、cacerts.jks ファイルを更新します。
  • Upgrades with a signed certificate:署名済み証明書は Enterprise Console によって変更されず、アップグレード前の状態に留まります。
    注:プライベート IP/ホスト名から管理者応答用 varfile 内の serverHostName をパブリック IP に変更しないでください(前の Enterprise Console 新規インストールまたはアップグレードの serverHostName としてプライベート IP/ホスト名を使用した場合)。それ以降、Enterprise Console では、署名付き証明書がサポートされなくなります。この制限は、署名付き証明書を使用したアップグレードにのみ適用されます。
  • Upgrades with customized keystore/truststore path and passwordsEnterprise Console は、.jks ファイルが <EC_installationDir>/conf/keys フォルダ内にある場合にのみ、このファイルをバックアップします。.jks ファイルを移動したりパスワードを変更したりした場合でも、Enterprise Console によって、アップグレード前の PlatformAdminApplicationl.yml 内のキーストア/トラストストアのパスおよびパスワードが復元されます。

    .jksファイルを別の場所に移すとEnterprise Consoleによってファイルがバックアップされなくなるため、保存場所の変更は推奨されません。

SAN 展開での Enterprise Console の HTTPS の設定

AWS でサブジェクト代替名(SAN)用に導入された Enterprise Console の HTTPS を設定するには、san.cnf ファイルからキーを生成する必要があります。次の手順では、san.cnf ファイルの Enterprise Console の複数のホスト名とエイリアスを入力し、それを使用してキーを生成する方法について示します。

  1. SAN の san.cnf ファイルを作成します。次の例では、san.cnf ファイル、複数のドメイン名とエイリアスが [ alt_names ]. で定義されています

    [ req ]
    default_bits       = 2048
    distinguished_name = req_distinguished_name
    req_extensions     = req_ext
    prompt             = no
    [ req_distinguished_name ]
    countryName           = IN
    stateOrProvinceName   = Karnataka
    localityName          = Bangalore
    organizationName      = Appdynamics
    commonName            = ECserver
    [ req_ext ]
    subjectAltName = @alt_names
    [alt_names]
    DNS.1   = ECserver.com
    DNS.2   = ECserver.secondary.com
    DNS.3   = ECserver.alias1.com
    DNS.4   = ECserver.alias2.com
    IP.1        = 10.10.10.10
    IP.2        = 10.10.10.9 
  2. Using the san.cnf file, generate the private key and CSR with the following openssl command:

    openssl req -new -newkey rsa:2048 -nodes -out sslcert.csr -keyout private.key -config san.cnf
    BASH
  3. Check the CSR to confirm the SANs are correct:

    openssl req -noout -text -in sslcert.csr | grep DNS
    openssl req -noout -text -in sslcert.csr | grep IP
    BASH
  4. Sign the CSR by a certified authority (CA).

  5. Update the certificate for the Enterprise Console:

    ./platform-admin.sh update-certificate --private-key <privateKeyfile> --ssl-cert <sslCertFile> --ssl-chain <sslChainfile1> <sslChainfile2> <...>
    BASH

キーストアの認証情報のカスタマイズ方法

キーストアの証明書をカスタマイズできます。カスタマイズしたキーストア/トラストストアのパスワードは、Enterprise Console で保持されます。

カスタマイズしたファイルのバックアップを維持するには、<EC_installationDir>/conf/keys ディレクトリにそのファイルを置きます。<EC_installationDir>/conf/keys 以外の場所にファイルを保存すると、バックアップされていない場合があるため、推奨されません。

Enterprise Console のキーストアコンテンツを変更する場合は、change-keystore-password コマンドを再実行して暗号化しなおす必要があります。再暗号化した後は Enterprise Console の再起動が必要になります。詳細については、「コントローラSecure Credential Store」を参照してください。

暗号化されたパスワードの取得

.jks ファイルのパスワードを更新できます。更新する場合は、 PlatformAdminApplication.yml ファイル内のパスワードも更新する必要があります。

PlatformAdminApplication.yml ファイルの supportedProtocols は変更しないでください。

暗号化されたパスワードを取得する場合、次のようにします。

- ステップ 4 で使用するために生成されたパスワードをメモしておきます。

- Enterprise Console で動作する keystore.jks ファイルの場合、storepass keypass を同じにする必要があります。

  1. Enterprise Console CLI を使用して新しいパスワードを暗号化します。

    ./platform-admin.sh encrypt -t '<plain_text_password>'
  2. 手順 1 の <plain_text_password> を使用して、keystore.jks のストアパスを変更します。

    keytool -storepasswd -keystore keystore.jks
  3. 手順 1 の <plain_text_password> を使用して、keystore.jks  内の ec-server keypass を変更します。

    keytool -keypasswd -alias ec-server -keystore keystore.jks
  4. 暗号化されたパスワードを使用して、キー "keyStorePassword" の Enterprise Console Dropwizard 確認 yml ファイル(PlatformAdminApplication.yml)を更新します。

  5. Enterprise Consoleを再起動します。

署名済み証明書への更新

Enterprise Consoleで作成されたビルトイン自己署名証明書は、適切な認証局が発行するCA署名証明書に更新できます。

Java キーストアの既存の公開鍵を再利用して CSR リクエストを生成するには、署名済み証明書を手作業でインポートする必要があります。詳細については、「証明書の作成と CSR の生成」の手順 6 ~ 9 を参照してください。

ほとんどのLinuxディストリビューションにはOpenSSLが付属しています。Windows を使用している場合、または Linux ディストリビューションに OpenSSL が付属していない場合は、OpenSSL の Web サイトから詳細情報を入手してください。

  1. 署名済み証明書を取得します。
    1. CSRリクエストを作成します。


      //Some CAs will create everything for you, including the private key. You may use the following keytool command to create a csr request from existing keystore.jks.
      keytool -certreq -alias ec-server -keystore keystore.jks -file AppDynamics.csr
      
      


      または


      //You can also use the following openssl command to create your own private key and csr request.
      openssl req -new -newkey rsa:2048 -nodes -out <name of csr request file>.csr -keyout <name of private key>.key -subj "/C=<custom>/ST=<custom>/L=<custom>/O=<custom>/OU=<custom>/CN=<hostname>"
      
      
    2. コマンド(この例ではAppDynamics.csr)で生成された証明書署名リクエストファイルを、選択した認証局に提出します。準備ができ次第、CA は署名済み証明書と信頼チェーンに必要なルート証明書および中間証明書を発行します。認証局からの返信には、必要に応じて証明書をインポートするための特別な指示が含まれている場合があります。証明書がCAからテキスト形式で提供される場合は、その内容をコピーしてテキストファイルに貼り付けます。

  2. Enterprise Console の証明書を更新する以下の CLI コマンドを実行します。

    ./platform-admin.sh update-certificate --private-key <privateKeyfile> --ssl-cert <sslCertFile> --ssl-chain <sslChainfile1> <sslChainfile2> ...

    このコマンドを実行する際のポイントについては、以下の情報を参考にしてください。

    • privateKeyfile, sslCertFile, と ssl-chain ファイルには、ファイル形式に関する制限はありません。.pkey.txt など、どのようなフォーマットのファイルであっても読み取りできる限りは正常に機能します。
    • privateKeyfile  ファイルコンテンツは PKCS8 形式に準拠している必要があります。
    • sslCertFile使用する SSL 証明書ファイルです。
    • ssl-chain ファイルは、中間証明書などの追加の証明書です。ファイルを追加するパラメータはオプションですが、任意の数だけパラメータを追加することができます。

    このコマンドにより、構成 yml ファイル内のキーストアとトラストストア内の証明書が更新されます。

  3. Enterprise Console を再起動して新しい SSL 構成を適用します。 

SSL使用の確認

Enterprise Console GUIにログインしてHTTPSサポートが機能しているかをテストできます。

構成が正常に動作していることを確認するには、ブラウザを使用してデフォルトのセキュアポートであるポート9191を介してEnterprise Consoleに接続します。

https://<hosthame>:9191
CODE

Enterprise Console のインストール時に使用したホスト名を指定します。デフォルトポートは9191です。このポートは、どこからでもアクセスできるよう、ファイアウォールのルールから除外する必要があります。詳細については、「ポート設定」を参照してください。

Enterprise Consoleのエントリページが正常にブラウザにロードされることを確認してください。

ご使用のブラウザによっては、接続確認のためにこれ以外の手順が必要になる場合があります。たとえばChromeで自己署名証明書を使用する場合は、先に進むためにクリック操作が必要になります。Firefoxでは、セキュリティの例外を追加しないと続行できません。

Enterprise Console CLIでコマンドを実行して、構成が有効になっているかを確認することもできます。

期限切れ証明書

証明書の期限が切れていても Enterprise Console の CLI は動作しますが、期限切れを知らせる警告が表示されます。 

期限切れの証明書によるアップグレードへの影響はありません。証明書の有効期限が切れていることを知らずにEnterprise Consoleをアップグレードしたとしても、プロセスは正常に終了します。

Enterprise Console の自己署名証明書はコンソールアプリケーションを再インストールすることで更新できます。独自の自己署名証明書を使用する場合は、CA から新しい証明書を取得し、署名付き証明書への更新から CLI コマンドを実行できます。

Enterprise Console設定のHTTPへの切り戻し

Enterprise Consoleアプリケーションを再インストールすれば、HTTPSのサポートをフォールバックしてHTTPに切り替えることができます。

  1. 次の手順に従って、Enterprise Console をアップグレードします。
    1. プラットフォーム管理者応答用varfileを、以下のように変更します。

      platformAdmin.useHttps$Boolean=false
      CODE
  2. アップグレードを完了させます。 

Enterprise Console は、<EC_installationDir>/conf/keys 内にあるすべての自己署名証明書または署名付き証明書をバックアップします。ただし、keystore.jkstruststore.jks を独自の場所に手動で移動した場合は、カスタマイズした証明書と SSL 関連ファイルを、アップグレード前にご自身でバックアップする必要があります。

SSLに関するよくある問題のトラブルシューティング

このセクションでは、Enterprise ConsoleのSSLに関するよくある問題をいくつか紹介しています。トラブルシューティングを始める前に、CLI コマンドを実行しているセクションの platform-admin.sh の -Djavax.net.debug=ssl を有効にしておくと問題解決に役立つ場合があります。

Enterprise Console CLIに関する問題

Enterprise Console のインストールまたはアップグレードが正常に完了したにもかかわらず CLI が動作しない場合、CLI はインストーラの varfile に入力した serverHostName が有効な値であることを確認するように促します。次のエラーが表示されます。Hostname %s not verified.

拡張フィールドがない証明書に関する問題

拡張子フィールドのない証明書(特に、無料の署名付き証明書)は機能しません。KeyUsage エラーが発生します。適格な CA 認証局からの署名付き証明書のみを使用する必要があります。

Enterprise Consoleの再起動に関する問題

Linux マシンの NSS パッケージは最新版に更新する必要があります。最新の状態になっていない場合、Enterprise Consoleが再起動できない場合があります。詳しくは、「はじめに」を参照してください。