[comment]: # ({f65323a6-f65323a6})
# 2 PostgreSQL 加密配置

[comment]: # ({/f65323a6-f65323a6})

[comment]: # ({63be0cfa-63be0cfa})
### 概述

本节提供了几个适用于 CentOS 8.2 和 PostgreSQL 13 的加密配置示例。

::: noteclassic
如果 *数据库 主机* 字段的值以斜杠开头或该字段为空，则 Zabbix 前端与 PostgreSQL 之间的连接无法被加密（GUI 中的相关参数会被禁用）。
:::

[comment]: # ({/63be0cfa-63be0cfa})

[comment]: # ({5bd8b8ac-47df7706})
### 先决条件

使用[official
repository](https://www.postgresql.org/download/linux/redhat/)安装PostgreSQL数据库。

PostgreSQL默认不配置为接受TLS连接。请参考PostgreSQL文档中的[certificate preparation with
postgresql.conf](https://www.postgresql.org/docs/13/ssl-tcp.html)说明进行配置，同时参考通过ph\_hba.conf配置的[user access
control](https://www.postgresql.org/docs/13/auth-pg-hba-conf.html)说明。

默认情况下，PostgreSQL套接字绑定到本地主机，若要允许网络远程连接，请监听实际的网络接口。

所有[术语](/manual/appendix/install/db_encrypt#术语)的PostgreSQL设置可以如下所示：

**/var/lib/pgsql/13/data/postgresql.conf:**

    ...
    ssl = on
    ssl_ca_file = 'root.crt'
    ssl_cert_file = 'server.crt'
    ssl_key_file = 'server.key'
    ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'
    ssl_prefer_server_ciphers = on
    ssl_min_protocol_version = 'TLSv1.3'
    ...

为了访问控制，请调整 */var/lib/pgsql/13/data/pg\_hba.conf* 文件：

    ...
    ### require
    hostssl all all 0.0.0.0/0 md5

    ### verify CA
    hostssl all all 0.0.0.0/0 md5 clientcert=verify-ca

    ### verify full
    hostssl all all 0.0.0.0/0 md5 clientcert=verify-full
    ...

[comment]: # ({/5bd8b8ac-47df7706})

[comment]: # ({7b44fd81-fda36821})
### 仅传输加密

[comment]: # ({/7b44fd81-fda36821})

[comment]: # ({3c0e876a-3c0e876a})
#### 前端

要启用 Zabbix 前端与数据库之间连接的仅传输加密：

-   勾选 *数据库 TLS 加密*
-   不勾选 *验证数据库证书*

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

[comment]: # ({/3c0e876a-3c0e876a})

[comment]: # ({99c0e65b-99c0e65b})
#### Server

为启用服务器与数据库之间连接的仅传输加密，请配置 */etc/zabbix/zabbix\_server.conf*：

    ...
    DBHost=10.211.55.9
    DBName=zabbix
    DBUser=zbx_srv
    DBPassword=<strong_password>
    DBTLSConnect=required
    ...

[comment]: # ({/99c0e65b-99c0e65b})

[comment]: # ({68301bc1-ef3e06b2})
### 带CA验证的加密

[comment]: # ({/68301bc1-ef3e06b2})

[comment]: # ({ebbac498-e8c8dbd8})
#### 前端

要为 Zabbix 前端与数据库之间的连接启用基于证书颁发机构验证的加密：

-   勾选 *数据库 TLS 加密* 和 *验证数据库证书*
-   指定 *数据库 TLS CA 文件* 的路径

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

或者，也可以在 */etc/zabbix/web/zabbix.conf.php* 中进行如下设置：

    ...
    $DB['ENCRYPTION'] = true;
    $DB['KEY_FILE'] = '';
    $DB['CERT_FILE'] = '';
    $DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
    $DB['VERIFY_HOST'] = false;
    $DB['CIPHER_LIST'] = '';
    ...

[comment]: # ({/ebbac498-e8c8dbd8})

[comment]: # ({bbddedec-bbddedec})
#### Server

要在 Zabbix server 与数据库之间启用带证书验证的加密连接，请配置以下文件：
*/etc/zabbix/zabbix\_server.conf:*

    ...
    DBHost=10.211.55.9
    DBName=zabbix
    DBUser=zbx_srv
    DBPassword=<strong_password>
    DBTLSConnect=verify_ca
    DBTLSCAFile=/etc/ssl/pgsql/root.crt
    ...

[comment]: # ({/bbddedec-bbddedec})

[comment]: # ({edf12bed-ef07b8a6})
### 完全验证加密

[comment]: # ({/edf12bed-ef07b8a6})

[comment]: # ({83615cf7-83615cf7})
#### 前端

要启用使用证书和数据库 主机 身份验证的加密，以实现 Zabbix 前端与数据库之间的连接：

-   勾选 *数据库 TLS 加密* 和 *验证数据库证书*
-   指定 *数据库 TLS 密钥文件* 的路径
-   指定 *数据库 TLS CA 文件* 的路径
-   指定 *数据库 TLS 证书文件* 的路径
-   勾选 *数据库 主机 验证*

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

或者，也可以在 */etc/zabbix/web/zabbix.conf.php* 中进行如下设置：

    $DB['ENCRYPTION'] = true;
    $DB['KEY_FILE'] = '';
    $DB['CERT_FILE'] = '';
    $DB['CA_FILE'] = '/etc/ssl/pgsql/root.crt';
    $DB['VERIFY_HOST'] = true;
    $DB['CIPHER_LIST'] = '';
    ...

[comment]: # ({/83615cf7-83615cf7})

[comment]: # ({61b8c8f3-61b8c8f3})
#### Server

为在 Zabbix server 与数据库之间的连接中启用使用证书和数据库 主机 身份验证的加密，请配置 */etc/zabbix/zabbix\_server.conf*：

    ...
    DBHost=10.211.55.9
    DBName=zabbix
    DBUser=zbx_srv
    DBPassword=<strong_password>
    DBTLSConnect=verify_full
    DBTLSCAFile=/etc/ssl/pgsql/root.crt
    DBTLSCertFile=/etc/ssl/pgsql/client.crt
    DBTLSKeyFile=/etc/ssl/pgsql/client.key
    ...

[comment]: # ({/61b8c8f3-61b8c8f3})
