[comment]: # ({a804241c-5407a56a})
# 6 与前端的安全连接

[comment]: # ({/a804241c-5407a56a})

[comment]: # ({5ca67f7f-7cadd09e})
#### 概述

本节提供 Zabbix 前端 与 Zabbix 服务器 之间建立安全 TLS 连接的 Zabbix 设置步骤和配置示例。

[comment]: # ({/5ca67f7f-7cadd09e})

[comment]: # ({b3284585-ec63018e})
#### 配置

默认情况下，Zabbix 前端与 Zabbix 服务器之间的通信未加密。为提高安全性，请在两端都启用 TLS。下面是实现此目的的最简单方式示例。

1\. 生成证书和密钥。

创建工作目录：

```bash
sudo mkdir -p /etc/zabbix/ssl && cd /etc/zabbix/ssl
```

创建 CA 证书（将 `MyZabbixCA` 值调整为实际的通用名称）：

```bash
sudo openssl genrsa -out ca.key 4096
sudo openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MyZabbixCA/"
```

为 Zabbix 服务器生成私钥和证书（将 `zabbix-server.example.com` 值调整为实际的通用名称）：

```bash
sudo openssl genrsa -out server.key 2048
sudo openssl req -new -key server.key -out server.csr -subj "/CN=zabbix-server.example.com/"
sudo openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out server.crt
```

为 Zabbix 前端生成私钥和证书（将 `zabbix-frontend-node` 值调整为实际的通用名称）：

```bash
sudo openssl genrsa -out frontend.key 2048
sudo openssl req -new -key frontend.key -out frontend.csr -subj "/CN=zabbix-frontend-node/"
sudo openssl x509 -req -days 365 -in frontend.csr -CA ca.crt -CAkey ca.key -CAcreateserial -sha256 -out frontend.crt
```

2\. 设置适当的权限。 

对于 Zabbix 服务器（根据您的发行版中 Zabbix 服务器守护进程用户调整所有者/组）：

```bash
sudo chown root:zabbix /etc/zabbix/ssl/server.{crt,key} /etc/zabbix/ssl/ca.crt
sudo chmod 640 /etc/zabbix/ssl/server.key
sudo chmod 644 /etc/zabbix/ssl/server.crt /etc/zabbix/ssl/ca.crt
```

对于前端（根据您的发行版中的 Web 服务器用户调整所有者/组）：

```bash
sudo chown root:www-data /etc/zabbix/ssl/frontend.{crt,key}
sudo chmod 640 /etc/zabbix/ssl/frontend.key
sudo chmod 644 /etc/zabbix/ssl/frontend.crt
```

3\. 配置 Zabbix 服务器。

在 `zabbix_server.conf` 中添加：

```ini
TLSFrontendAccept=cert
TLSCertFile=/etc/zabbix/ssl/server.crt
TLSKeyFile=/etc/zabbix/ssl/server.key
TLSCAFile=/etc/zabbix/ssl/ca.crt
# 可选：
# TLSFrontendCertIssuer=/CN=MyZabbixCA/
# TLSFrontendCertSubject=/CN=zabbix-frontend-node/
```

然后重启服务器：

```bash
sudo systemctl restart zabbix-server
```

4\. 配置 Zabbix 前端。

在[Web 界面安装](/manual/installation/frontend)期间，启用 *Encrypt connections from Web interface* 选项（如有需要，还可启用 *Verify server certificate issuer and subject* 选项），并填写 *TLS CA file*、*TLS key file*、*TLS certificate file* 字段（如有需要，还可填写 *Server TLS certificate issuer* 和 *Server TLS certificate subject* 字段）：

![](../../../../assets/en/manual/appendix/install/frontend_encrypt.png){width="600"}

|Parameter|Description|
|--|--------|
|*TLS CA file*|指定用于验证服务器证书的证书颁发机构（CA）证书文件的完整路径。|
|*TLS key file*|指定与客户端证书对应的客户端私钥文件的完整路径。|
|*TLS certificate file*|如果需要双向 TLS 身份验证，请指定客户端证书文件的完整路径。|
|*Server TLS certificate issuer*|指定用于与服务器证书进行匹配的颁发者可分辨名称（DN）。|
|*Server TLS certificate subject*|指定用于与服务器证书进行匹配的主题可分辨名称（DN）。|

对于现有安装，请编辑 `zabbix.conf.php` 中的以下字段：

```php
$ZBX_SERVER_TLS['ACTIVE'] = '1';
$ZBX_SERVER_TLS['CA_FILE'] = '/etc/zabbix/ssl/ca.crt';
$ZBX_SERVER_TLS['KEY_FILE'] = '/etc/zabbix/ssl/frontend.key';
$ZBX_SERVER_TLS['CERT_FILE'] = '/etc/zabbix/ssl/frontend.crt';
// 可选：
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER']  = '/CN=MyZabbixCA/';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = '/CN=zabbix-server.example.com/';
```

5\. 通过确认 Zabbix 前端或 Zabbix 服务器日志文件中没有错误消息来验证加密：

```bash
tail -f /var/log/zabbix/zabbix_server.log
```

[comment]: # ({/b3284585-ec63018e})
