Google Chrome TLS証明書の信頼

概要

このページでは、自己署名証明書またはプライベート認証局で保護された Zabbix Webインターフェース、または zabbix-web-service エンドポイントで Google Chrome を使用するための Zabbix のセットアップ手順と設定例を説明します。

これらの手順では、対象の Web サーバーがすでに HTTPS 用に設定されていることを前提としています。 Zabbix Webインターフェースで TLS を設定する方法については、Webインターフェースへの安全な接続 を参照してください。

設定

Linux 上の Google Chrome は、信頼済み証明書用にユーザーごとの NSS 証明書データベースを使用します。
Chrome に自己署名証明書またはプライベート認証局を信頼させるには、Chrome を実行するユーザーアカウントの NSS データベースに必要な証明書を追加します。

1. 必要なパッケージをインストールします。

Debian/Ubuntu の場合:

sudo apt install ca-certificates libnss3-tools

RHEL ベースのシステムの場合:

sudo dnf install ca-certificates nss-tools

または:

sudo yum install ca-certificates nss-tools

2. 証明書ファイルを準備します。

必要な各証明書について、自己署名証明書用の PEM ベースの .crt ファイルを作成するか、ルート認証局証明書用の PEM ベースの .crt ファイルを個別に作成し、必要に応じて各中間証明書用の .crt ファイルも作成します。

3. NSS データベースのディレクトリを作成します。

Chrome を実行するユーザーのホームディレクトリを使用します。

例:

sudo mkdir -p /var/lib/zabbix/.pki/nssdb
sudo -u zabbix certutil -N -d sql:/var/lib/zabbix/.pki/nssdb
sudo chown -R zabbix:zabbix /var/lib/zabbix/.pki/nssdb

対象システム上の Chrome が別の NSS データベースの場所を使用している場合は、そのディレクトリを使用してください。

証明書ファイルが Google Chrome を実行するユーザーから読み取り可能であることを確認してください。
必要に応じて、そのユーザーがアクセスできる場所にコピーします。

4. 証明書をインポートします。

自己署名証明書を使用する場合:

sudo -u zabbix certutil -d sql:/var/lib/zabbix/.pki/nssdb \
  -A -t "P,," \
  -n "Zabbix self-signed certificate" \
  -i /path/to/self-signed.crt

プライベート認証局を使用する場合は、ルート認証局証明書をデータベースにインポートします:

sudo -u zabbix certutil -d sql:/var/lib/zabbix/.pki/nssdb \
  -A -t "C,," \
  -n "Zabbix root certificate authority" \
  -i /path/to/root-ca.crt

中間証明書を使用する場合は、各証明書を個別にインポートします:

sudo -u zabbix certutil -d sql:/var/lib/zabbix/.pki/nssdb \
  -A -t ",," \
  -n "Zabbix intermediate certificate" \
  -i /path/to/intermediate-ca.crt

5. 証明書データベースを確認します。

sudo -u zabbix certutil -d sql:/var/lib/zabbix/.pki/nssdb -L

6. Chrome をテストします。

Google Chrome は、起動したユーザーアカウントの証明書データベースを使用します。
ユーザーアカウントに書き込み可能なホームディレクトリがない場合は、テストを実行する前に書き込み可能なホームディレクトリと XDG ディレクトリを設定してください。

例 (google-chrome の代わりに Chromium を使用する場合は chromium に置き換えてください。):

sudo -u zabbix env \
  HOME=/var/lib/zabbix-home \
  XDG_CONFIG_HOME=/var/lib/zabbix-home/.config \
  XDG_DATA_HOME=/var/lib/zabbix-home/.local/share \
  XDG_CACHE_HOME=/var/lib/zabbix-home/.cache \
  google-chrome --headless --disable-gpu \
  --user-data-dir=/var/lib/zabbix-home/chrome-profile \
  --dump-dom https://FQDN_OF_ZABBIX_SERVER

設定が正しければ、このコマンドは要求したページの HTML を返します。

Chrome が証明書を信頼しない場合、このコマンドは NET::ERR_CERT_AUTHORITY_INVALID などのメッセージを含む証明書エラーページを返します。

トラブルシューティング

Error Possible cause
NET::ERR_CERT_AUTHORITY_INVALID 証明書が誤ったユーザープロファイルにインポートされている、ルート認証局証明書が不足している、または中間証明書が不足している。
NET::ERR_CERT_COMMON_NAME_INVALID 証明書がブラウザーのURLで使用されているホスト名と一致していない。
NET::ERR_CERT_DATE_INVALID 証明書の有効期限が切れている、まだ有効になっていない、またはシステムクロックが正しくない。
Chrome still shows a certificate warning after import Chrome が現在のユーザーに対して別の NSS データベースを使用しているか、証明書の信頼フラグが正しくない。