自己署名証明書

特定の技術の監視を有効にしたり、内部のMavenミラーにアクセスしたりするために、自己署名証明書を使用する必要がある場合があります。 このトピックでは、 Linux および Windows の両環境において、 Instana のホストエージェントでエージェントレベルでの自己署名証明書を設定する方法について説明します。

注: バックエンドレベルの証明書設定( Instana バックエンドが接続する外部サービス向け)については、 「カスタムCA証明書の使用」 を参照してください。

さまざまなエージェントのインストールに自己署名証明書を提供するには、以下の内容を参照してください。

Java のトラストストアファイルに自己署名証明書を追加する

この keytool コマンドは、 Linux と Windows の両方の環境で同じように動作します。 以下の手順は、両方のオペレーティングシステムに適用されます。

  1. Java のtruststoreファイルをコピーし、安全な場所に保存してください。

    • Instana ホストエージェントに付属する JVM のデフォルトの Java トラストストアを使用する場合は、エージェントがインストールされているホストマシン上で、 Java というトラストストアファイルを探してください。 その後、ファイルをエージェントのインストールパス以外の安全な場所に保存してください。

      • Linux® / Unix® 上の HotSpot JVM(Azul Zulu 11)については: /opt/instana/agent/jvm/jre/lib/security/cacerts
      • Linux / Unix 上の J9 JVM( IBM、 J9、11)の場合: /opt/instana/agent/jvm/lib/security/cacerts
      • Windows® 上の HotSpot JVM(Azul Zulu 11)の場合: C:\Program Files\Instana\instana-agent\jvm\lib\security\cacerts
      • Windows 上の J9 JVM( IBM、 J9、11)の場合: C:\Program Files\Instana\instana-agent\jvm\lib\security\cacerts

      あるいは、次のようにしてコンテナイメージから Java のトラストストアファイルを抽出することもできます:

      • HotSpot (Azul Zulu 11)ベースの Instana エージェントでは、次のコマンドを実行してください:

        id=$(docker create icr.io/instana/agent:latest); docker cp $id:/opt/instana/agent/jvm/lib/security/cacerts /<local_path>/cacerts && docker rm -v $id

        コマンド内の <local_path> を、デフォルトの Java トラストストアファイルを保存するローカルホストのパスに置き換えてください。

      • J9 ( IBM、 J9、11)ベースの Instana エージェントでは、次のコマンドを実行してください:

        id=$(docker create icr.io/instana/agent:latest-j9); docker cp $id:/opt/instana/agent/jvm/lib/security/cacerts /<local_path>/cacerts && docker rm -v $id

        コマンド内の <local_path> を、デフォルトの Java トラストストアファイルを保存するローカルホストのパスに置き換えてください。

    • Instana ホストエージェントでカスタムの Java トラストストアを使用する場合は、 「 Instana ホストエージェントでカスタムの Java トラストストアを使用する」セクションの手順に従って、ホストエージェントの Java トラストストアを設定してください。 その後、カスタマイズした Java のトラストストアファイルを安全な場所に保存してください。

  2. 次のコマンドを実行して、自己署名証明書を Java のトラストストアファイルにインポートします:

    keytool -import -alias <provided_alias> -keystore <java_truststore> -storepass <password> -file <path_to_self-signed_certificate>
    • 鍵ストア・エントリーは別名によって識別されます。 < provided_alias> を、選択した値に置き換えます。
    • <java_truststore> を、前の手順でコピーした「 Java 」トラストストアファイルへの絶対パスに置き換えてください。
    • < password> を、選択したパスワードに置き換えます。 デフォルトの Java トラストストアファイルのデフォルトパスワードは. changeitです。
    • < path_to_self signed_certificate> を、インポートする自己署名証明書への絶対パスに置き換えます。

    Windows (コマンドプロンプトまたは PowerShell を使用)でも、コマンドは同じです:

    keytool -import -alias <provided_alias> -keystore <java_truststore> -storepass <password> -file <path_to_self-signed_certificate>
    注: この keytool コマンドは Java のインストールに含まれており、 Linux と Windows の両方で同じように動作します。 Windows では、PATH にが含まれて keytool いない場合、 Javabin のインストール先のディレクトリ(例: C:\Program Files\Instana\instana-agent\jvm\bin\keytool.exe)内にあります。

Instana エージェントでカスタム Java トラストストアファイルを使用する

Instana エージェントで、 JVM のデフォルトの Java トラストストアを使用したくない場合は、カスタムの Java トラストストアを使用できます。

Linux ホスト

Instana エージェントが Linux にインストールされている場合は、次のいずれかの方法を使用してください:

systemd

  1. 以下のいずれかの方法で、 Java のトラストストアパラメータを指定してください:

    • ユニット・ファイルを使用します。

      1. 現行のユニット・ファイルを変更するには、次のコマンドを実行します。

        systemctl edit instana-agent

        次に、システムのデフォルト・エディターで現行ユニット・ファイルが開きます。

      2. 以下の行を見つけてください。

        ### Anything between here and the comment below will become the new contents of the file
        
        ### Lines below this comment will be discarded

        以下の内容をファイルに追加します。

        [Service]
        Environment="JAVA_OPTS=-Djavax.net.ssl.trustStore=<path_to_java_truststore> -Djavax.net.ssl.trustStoreType=jks"
        • <path_to_java_truststore> を、ご使用のカスタム Java トラストストアファイルのパスに置き換えてください。
        • カスタム Java トラストストアを読み込む際に、パスワードを指定する必要はありません。
    • /etc/systemd/system/instana-agent.service.d/ ディレクトリー内の拡張子が .conf の追加ファイルを、ドロップインとして使用します。

      1. /etc/systemd/system/instana-agent.service.d/ ディレクトリーに、拡張子が .confの新規ファイル ( /etc/systemd/system/instana-agent.service.d/environments.confなど) を作成します。

      2. 以下の内容をファイルに追加します。

        [Service]
        Environment="JAVA_OPTS=-Djavax.net.ssl.trustStore=<path_to_java_truststore> -Djavax.net.ssl.trustStoreType=jks"
        • <path_to_java_truststore> を、ご使用のカスタム Java トラストストアファイルのパスに置き換えてください。
        • カスタム Java トラストストアを読み込む際に、パスワードを指定する必要はありません。
  2. 以下のコマンドを実行して、変更したユニット・ファイルを再ロードします。

    systemctl daemon-reload
  3. 変更を反映させるには、次のコマンドを実行して Instana ホストエージェントを再起動してください:

    systemctl restart instana-agent

環境変数

ホストエージェントでカスタムの Java トラストストアを使用するには、次のように環境変数を設定することもできます:

注:Instana のホストエージェントを直接起動する場合は、ホストエージェントを起動する前に、必ず以下の環境変数を設定してください。
JAVA_OPTS="-Djavax.net.ssl.trustStore=<path_to_java_truststore> -Djavax.net.ssl.trustStoreType=jks"
  • <path_to_java_truststore> を、ご自身のカスタム Java トラストストアファイルのパスに置き換えてください。
  • カスタム Java トラストストアを読み込む際に、パスワードを指定する必要はありません。

Windows ホスト

Instana エージェントが Windows にインストールされている場合は、環境変数または Windows サービスの設定を使用して、 Java のトラストストアを設定してください。

環境変数の使用

  1. Java のトラストストアパラメータを使用して、環境 JAVA_OPTS 変数を設定します。

    この変数は、システムレベルまたはユーザーレベルで設定できます:

    • システムのプロパティ 」を開き、「 詳細設定 」>「 環境変数 」の順に選択します。
    • システム変数 」または「 ユーザー変数 」の下にある 「新規 」をクリックします。
    • 変数名を に設定します JAVA_OPTS
    • 変数の値を次のように設定します:

      -Djavax.net.ssl.trustStore=<path_to_java_truststore> -Djavax.net.ssl.trustStoreType=jks
    • <path_to_java_truststore> を、カスタム Java トラストストアファイルのフルパスに置き換えてください(例: C:\certs\cacerts )。
    • カスタム Java トラストストアを読み込む際に、パスワードを指定する必要はありません。
  2. 変更を反映させるには、 Instana エージェントサービスを再起動してください。

    「サービス」 を開き( services.msc )、「 Instana Agent 」サービスを探して、再起動します。

Windows サービスの設定の使用

  1. 「 Windows 」のレジストリ エディタを開きます(regedit)。

  2. Instana のエージェント・サービス・レジストリ・キーに移動します:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\instana-agent
  3. マルチストリング Environment 値を探して選択するか、作成してください。

  4. Environment に次の行を追加してください:

    JAVA_OPTS=-Djavax.net.ssl.trustStore=<path_to_java_truststore> -Djavax.net.ssl.trustStoreType=jks
    • <path_to_java_truststore> を、カスタム Java トラストストアファイルのフルパスに置き換えてください。
    • カスタム Java トラストストアを読み込む際に、パスワードを指定する必要はありません。
  5. 変更を反映させるには、 Instana エージェントサービスを再起動してください。

重要:Windows レジストリを変更すると、システムの安定性に影響を与える可能性があります。 変更を加える前に、必ずレジストリのバックアップを取ってください。

エージェントレベルとバックエンドレベルの証明書設定をいつ使用すべきか

エージェントレベルとバックエンドレベルの証明書設定を、それぞれどのような場合に使用すべきかを理解することで、 Instana の導入環境を適切に保護することができます:

  • エージェントレベルの証明書設定 (このトピック): Instana エージェントが、自己署名証明書を使用する監視対象のテクノロジーやサービスに接続する必要がある場合、`import-certificate` keytool コマンドを使用して、証明書をエージェントの Java トラストストアにインポートします。 この設定は、エージェントが監視対象のシステムと通信する方法に影響します。

    例:自己署名証明書を使用しているデータベース、アプリケーションサーバー、または内部サービスの監視。

  • バックエンドレベルの証明書設定 :バックエンドがカスタム認証局を使用する外部サービスに接続する必要がある場合、 Instana バックエンドに証明書をインポートするには、コマンド stanctl backend apply --core-custom-ca-crt を使用します。 この設定は、バックエンドが外部システムと通信する方法に影響します。

    例:外部の LDAP サーバー、SMTPサーバー、またはその他の外部サービスへの接続。 詳細については、 「カスタムCA証明書の使用」 を参照してください。

トラブルシューティング

Instana のエージェントログにSSLExceptionが発生

Instana エージェントのログに、次のような例外が表示される場合があります:

Caused by: javax.net.ssl.SSLException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

この例外は、有効な Java トラストストアファイルなしで Instana エージェントを起動したことを示しています。

この問題を解決するには、変更内容を確認し、 Instana エージェントが指定された Java トラストストアファイルにアクセスできることを確認する必要があります。