17 Google Chrome TLS 证书信任
概述
本页面提供了使用 Google Chrome 访问 Zabbix 前端或 zabbix-web-service 端点时的 Zabbix 设置步骤和配置示例,这些端点通过自签名证书或私有证书颁发机构进行保护。
这些说明假定目标 web 服务器已配置为 HTTPS。 有关为 Zabbix 前端配置 TLS 的信息,请参见 与前端的安全连接。
配置
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 数据库,或者证书信任标志不正确。 |