ITMと V6 の統合に向けた TLS または HTTPS の設定(パブリックプレビュー)

IBM Tivoli Monitoring および V6 エージェントと Instana ホストエージェント間の、 TLS または HTTPS による安全な通信を設定する方法について説明します。

概要

デフォルトでは、ITMエージェントは、ポート42699(ITMエージェントと Instana 間の通信におけるデフォルトポート)の HTTP 経由で、 Instana ホストエージェントと通信します。 安全な通信を行うために、ITMエージェントと Instana ホストエージェント間の TLS / HTTPS 接続を設定できます。

HTTPS を設定するには、双方で証明書の設定を行う必要があります:

  1. Instana ホストエージェント側: TLS の証明書(.crt および .key ファイル)を設定し、ポート42699で HTTPS を有効にします。
  2. ITMエージェント側: Instana ホストエージェントの証明書を信頼するように、 IBM のGSK(Global Security Kit)キーリングファイルを設定します。

Instana のホストエージェントは、標準的なテキスト形式の証明書ファイル(.crt および .key)を使用しますが、ITMエージェントは IBM のGSKキーリングデータベースファイル(.kdb および .sth)を必要とします。 このガイドでは、両方の証明書形式の作成および設定手順を順を追って説明します。

前提条件

作業を開始する前に、以下の要件を満たしていることを確認してください:

  • Instana のホストエージェントをインストールして実行します。
  • ITM V6 エージェントがバージョン またはそれ以降 6.3.0.7-TIV-ITM_TEMA-IF0008 に更新されていること。 HTTPS をサポートするには、このバージョンが必要です。
  • 証明書を生成するシステムに OpenSSL をインストールしてください。
  • IBM のGSKitコマンドが利用可能であることを確認してください(通常、ITMのインストールに含まれています)。
  • ITM「 V6 」設定パックをダウンロードして解凍してください。

手順 1: Instana ホストエージェントで TLS を設定する

まず、 Instana ホストエージェントで TLS を有効にし、ポート42699での HTTPS 接続を受け入れるように設定します。

TLS 証明書の作成

自己署名証明書を作成するか、認証局(CA)から証明書を取得することができます。

オプションA:自己署名証明書を作成する

自己署名証明書を作成するには、次のコマンドを使用します:

# Create a private key
openssl genrsa -out tls.key 2048

# Create a certificate signing request (CSR)
# Replace 'instana.example.com' with your Instana host agent's hostname
openssl req -new -key tls.key -out tls.csr -subj "/CN=instana.example.com"

# Create a self-signed certificate valid for 365 days
openssl x509 -req -days 365 -in tls.csr -signkey tls.key -out tls.crt
重要: 証明書内の共通名(CN)は、ITMエージェントが Instana ホストエージェントに接続する際に使用するホスト名と一致している必要があります。
注: 証明書の有効期限が切れる前に、新しい証明書を生成し、 Instana のホストエージェントとITMエージェントの両方のキーリングファイルを更新して、安全な通信を維持してください。

オプションB:自社のCAが発行した証明書を使用する

すでに認証局(CA)から証明書を取得している場合は:

  1. 証明書ファイル(.crt または .pem)と秘密鍵ファイル(.key)の両方が用意されていることを確認してください。ファイル .pem とファイル .crt はどちらもテキスト形式の証明書であり、互換性があります。
  2. 証明書の共通名(CN)が、 Instana のホストエージェントのホスト名と一致していることを確認してください:
    openssl x509 -in your-cert.crt -noout -subject

Instana ホストエージェントへの証明書のインストール

  1. 証明書ファイルを Instana のホストエージェントにコピーします:
    • <agent_installation>/etc/certs/tls.crt
    • <agent_installation>/etc/certs/tls.key
  2. 証明書を追加したら、エージェントを再起動してネットワーク接続を初期化してください。
  3. エージェントが HTTPS でリスニングしていることを確認してください:
    # This should show a TLS handshake
    openssl s_client -connect localhost:42699 -showcerts

    出力には証明書チェーンと、接続が正常に確立されたことが表示されます。

Instana ホストエージェントにおける TLS の設定に関する詳細については、 「エージェントエンドポイントの TLS 暗号化の設定」 を参照してください。

ステップ 2: ITM エージェント用の「 IBM 」GSK キーリング ファイルを作成する

ITMエージェントは、証明書に IBM Global Security Kit (GSK) 形式を使用します。これには、キーリングデータベース (.kdb) とスタッシュファイル (.sth) の作成が必要です。

IBM のGSKitコマンドの場所

IBM GSKitは通常、ITMのインストールに含まれています。 以下の例では、 Linux のパスを使用しています。 その他の Unix 類似システム( AIX )については、お使いのITMのインストール環境に合わせてパスを調整してください。

GSKit コマンドの一般的な配置場所:

  • Linux: /opt/IBM/ITM/<arch>/gs/bin/gsk8capicmd_64
  • Windows : C:\IBM\ITM\GSK8_x64\bin\gsk8capicmd_64.exe (32ビットシステムの場合は、の代わりに GSK8GSK8_x64 を使用してください)

Linux でGSKitコマンドを使用する前に、ライブラリのパスを設定してください:

export LD_LIBRARY_PATH=/opt/IBM/ITM/<arch>/gs/lib64:$LD_LIBRARY_PATH
注:AIX システムでは、の代わりに LIBPATHLD_LIBRARY_PATH を使用してください。

GSKit コマンドが利用可能かどうかを確認してください:

/opt/IBM/ITM/<arch>/gs/bin/gsk8capicmd_64 -help
注: 「共有オブジェクトファイルを開けません」というエラーが発生した場合は、ITMのインストール環境においてライブラリパスが正しく設定されていることを確認してください。

キーリングファイルの作成

  1. 設定パック内に keyfiles ディレクトリを作成します:
    cd /path/to/instana-v6-configuration-pack
    mkdir keyfiles
    cd keyfiles
  2. GSKit コマンドへのパスを設定します(お使いの ITM のインストール環境に合わせて調整してください):
    GSK_CMD=/opt/IBM/ITM/<arch>/gs/bin/gsk8capicmd_64
  3. スタッシュファイルを使用して新しいキーリングデータベースを作成します:
    $GSK_CMD -keydb -create -db keyfile.kdb -pw password -type cms -stash
    重要: 「password」を強固なパスワードに置き換えてください。 stashファイルはこのパスワードを暗号化しますが、組織のセキュリティポリシーに従って、安全なパスワードを設定してください。
    注: この -stash オプションを指定すると、パスワードを暗号化された形式で保存するスタッシュファイル keyfile.sth が作成されます。 これにより、ITMエージェントはパスワードの入力を求められずにキーリングにアクセスできるようになります。
  4. ステップ1で作成した Instana ホストエージェントの証明書を、現在のディレクトリにコピーします。 Instana のホストエージェントシステムから、キーリングファイルを作成するシステムへ、その tls.crt ファイルを転送する必要があります:
    # Example: Copy the certificate from the Instana host agent
    # name the file instana-host-agent.crt
  5. Instana ホストエージェントの証明書を、信頼されたCA証明書としてキーリングにインポートします:
    $GSK_CMD -cert -add -db keyfile.kdb -pw password -label "Instana_Host_Agent_Cert" -file instana-host-agent.crt -format ascii -trust enable
    注: インポートに失敗した場合は、証明書ファイルの形式がASCIIまたは PEM であること、およびファイルパスが正しいことを確認してください。
    注: この -trust enable フラグを設定すると、この証明書が信頼済みとしてマークされ、ITMエージェントが Instana ホストエージェントからの接続を受け入れるようになります。
  6. キーリングの内容を確認してください:
    $GSK_CMD -cert -list -db keyfile.kdb -pw password

    出力には、キーリング内の証明書(「Instana_Host_Agent_Cert」を含む)が一覧表示されます。

  7. (オプション)インポート後に証明書ファイルを削除する:
    rm instana-host-agent.crt
    注: 証明書がキーリングにインポートされると、元の証明書ファイルは不要となるため、セキュリティ上の理由から削除しても構いません。
  8. keyfiles ディレクトリに、少なくとも以下のファイルが含まれていることを確認してください:
    • keyfile.kdb - キーリング・データベース
    • keyfile.sth - パスワードが暗号化されたスタッシュファイル
    • keyfile.rdb - リクエストデータベース(自動生成)
    注: GSKitによって自動的に作成される「Certificate Revocation List」という keyfile.crl ファイルが表示される場合がありますが、 TLS の基本機能を利用するには、このファイルは必須ではありません。

ステップ 3: ITM エージェントが HTTPS を使用するように設定する

キーリングファイルの作成が完了したので、ITMエージェントが HTTPS を使用するように設定してください。

  1. 設定パック内のファイルを env.properties 更新してください:
    protocol=https
    hostname=instana.example.com
    tenantid=id-mycluster-account
    port=42699
    重要: ホスト名が、 Instana ホストエージェントの証明書に記載されている共通名(CN)と一致していることを確認してください。 不一致がある場合、ITMエージェントはセキュアな接続を確立できません。
  2. ディレクトリ keyfiles 構造を確認してください:
    ls -la keyfiles/

    ディレクトリーの内容は、以下のとおりです。

    keyfile.kdb
    keyfile.sth
    keyfile.rdb
  3. IBM ITM V6 との統合 」に記載されている手順に従って、設定スクリプトを実行してください:

    ローカル設定:

    ./agent2server_itm.sh -i /opt/IBM/ITM -c dual -e env.properties

    リモート設定:

    # First, transfer the keyfiles directory to the remote system
    tacmd putfile -m kvm-011235:LZ -s /path/to/configpack/keyfiles/keyfile.kdb -d /tmp/configpack/keyfiles/keyfile.kdb
    tacmd putfile -m kvm-011235:LZ -s /path/to/configpack/keyfiles/keyfile.sth -d /tmp/configpack/keyfiles/keyfile.sth
    tacmd putfile -m kvm-011235:LZ -s /path/to/configpack/keyfiles/keyfile.rdb -d /tmp/configpack/keyfiles/keyfile.rdb
    
    # Then run the configuration script
    tacmd executecommand -m kvm-011235:LZ -c "nohup /bin/sh -c 'sleep 10; /tmp/configpack/agent2server_itm.sh -i /opt/IBM/ITM -c dual -e /tmp/configpack/env.properties > /tmp/output' &" -w /tmp/configpack

    このスクリプトは、ディレクトリにあるキーリングファイルを、 keyfiles ITMエージェントシステム $CANDLEHOME/keyfiles_icam/ 上のディレクトリに自動的にデプロイします。

ITMエージェントが HTTPS を使用していることを確認する

HTTPS 用に ITM エージェントを設定した後、エージェントが実際にセキュア接続を使用していることを確認してください:

ITMエージェントの設定ファイルを確認し、プロトコルの設定を検証してください:

# Check the agent's environment file for the protocol setting
grep -i "https" $CANDLEHOME/config/*.environment

出力には、 HTTPS プロトコルを示すエントリが表示されています。 また、接続確立中にITMエージェントのログを確認し、「 SSL 」または「 TLS 」に関連するメッセージがないか確認してください。

重要:TLS が有効になっている場合、 Instana ホストエージェントは、ポート42699で HTTP および HTTPS の両方の接続を受け付けます。 ITMエージェントが HTTPS を使用していることを確認するには、 Instana のホストエージェントのログではなく、ITMエージェントの設定とログを確認する必要があります。

HTTPS 接続のトラブルシューティング

ITMエージェントが HTTPS 経由で接続できない場合は、以下のトラブルシューティング手順を実行してください:

証明書のホスト名不一致

症状: ITMエージェントが接続に失敗し、ログに「 SSL 」または「 TLS 」というエラーが表示される。

解決策: のホスト名が、 env.propertiesInstana ホストエージェントの証明書に記載されている共通名(CN)と一致していることを確認してください:

# Check the CN in the certificate
openssl x509 -in /opt/instana/agent/etc/certs/tls.crt -noout -subject

# Compare with the hostname in env.properties
grep hostname env.properties

証明書の信頼性に関する問題

症状: ITMエージェントが証明書の検証エラーを報告する。

解決策:Instana のホストエージェントの証明書が、ITMキーリングに正しくインポートされていることを確認してください:

$GSK_CMD -cert -list -db keyfile.kdb -pw password

このリストには「Instana_Host_Agent_Cert」が含まれています。 そうでない場合は、手順2に従って証明書を再インポートしてください。

ITMエージェントのログエラー

症状: 明確なエラーメッセージが表示されないまま接続に失敗する。

解決策: ITMエージェントのログで、 SSL または TLS のエラーがないか確認してください:

# Linux/AIX
tail -f $CANDLEHOME/logs/<short_hostname>_<product_code>_*.log

# Windows
type  %CANDLEHOME%\TMAITM6_x64\logs\<short_hostname>_<product_code>_*.log

「 SSL 」、「 TLS 」、「certificate」、または「handshake」という単語が含まれるメッセージを探してください。

Instana ホストエージェントの TLS 設定をテストする

症状:Instana のホストエージェントが、 TLS 用に正しく設定されているか不明です。

解決策:OpenSSL を使用して、 Instana ホストエージェントの TLS 設定を確認します

openssl s_client -connect instana.example.com:42699 -showcerts

接続に成功すると、次のように表示されます:

  • 証明書チェーン
  • 自己署名証明書の場合、「検証リターンコード:0(OK)」または「検証リターンコード:18(自己署名証明書)」と表示されます
  • 「 SSL ハンドシェイクの受信」というメッセージ

キーリングのファイル権限

症状: ITMエージェントがキーリングファイルを読み込めない。

解決策: キーリングファイルがITMエージェントのユーザーによって読み取り可能であることを確認してください:

ls -l $CANDLEHOME/keyfiles_icam/

ファイルには、ITMエージェントユーザーに対して少なくとも読み取り権限が設定されている必要があります。 そうでない場合は、権限を調整してください:

chmod 644 $CANDLEHOME/keyfiles_icam/keyfile.kdb
chmod 644 $CANDLEHOME/keyfiles_icam/keyfile.sth
chmod 644 $CANDLEHOME/keyfiles_icam/keyfile.rdb

ネットワーク接続

症状: 接続タイムアウトまたは「接続拒否」エラーが発生する。

解決策: ネットワーク接続とファイアウォールのルールを確認してください:

# Test connectivity to the Instana host agent
telnet instana.example.com 42699

# Or use nc (netcat)
nc -zv instana.example.com 42699

以下の点を確認してください。

  • Instana のホストエージェントシステムでは、ポート42699が開いています。
  • ファイアウォールルールにより、ITMエージェントシステムから Instana ホストエージェントへのポート42699での通信が許可されます。
  • DNS ホスト名に対して、この設定は正常に機能しています。