18 Google Chrome TLS 证书信任
概述
本页面提供了使用 Google Chrome 访问 Zabbix 前端或由自签名证书或私有证书颁发机构保护的 zabbix-web-service 端点时的 Zabbix 设置步骤和配置示例。
这些说明假定目标 web 服务器已配置为 HTTPS。
配置
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 文件。
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 目录。
示例(如果使用 Chromium,请将 google-chrome 替换为 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 之类的消息。
故障排除
| 错误 | 可能原因 |
|---|---|
NET::ERR_CERT_AUTHORITY_INVALID |
证书被导入到了错误的用户配置文件中,缺少根证书颁发机构证书,或者缺少中间证书。 |
NET::ERR_CERT_COMMON_NAME_INVALID |
证书与浏览器 URL 中使用的主机名不匹配。 |
NET::ERR_CERT_DATE_INVALID |
证书已过期、尚未生效,或者系统时钟不正确。 |
| 导入后 Chrome 仍显示证书警告 | Chrome 正在为当前用户使用不同的 NSS 数据库,或者证书信任标志不正确。 |