[comment]: # translation:outdated

[comment]: # ({f745f323-f745f323})
# 1 MySQL encryptie configuratie

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

[comment]: # ({f87c5964-f87c5964})
### Overzicht

Dit gedeelte biedt verschillende voorbeelden van coderingsconfiguraties voor:
CentOS 8.2 en MySQL 8.0.21 en kan worden gebruikt als een snelstartgids voor:
versleuteling van de verbinding met de database.

::: noteimportant
 Als
MySQL-host is ingesteld op localhost, encryptie-opties niet:
verkrijgbaar. In dit geval een verbinding tussen Zabbix frontend en de
database gebruikt een socketbestand (op Unix) of gedeeld geheugen (op Windows) en
kan niet worden versleuteld.
:::

::: noteclassic
 Lijst met codering
combinaties is niet beperkt tot degene die op deze pagina worden vermeld. Er zijn een
veel meer combinaties beschikbaar.
:::

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

[comment]: # ({30b5ee7b-30b5ee7b})
### Vereisten

Installeer MySQL-database vanaf de [officiële
repository](https://dev.mysql.com/downloads/repo/yum/).

Zie [MySQL
documentatie](https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/)
voor details over het gebruik van MySQL-repo.

MySQL-server is klaar om beveiligde verbindingen te accepteren met behulp van een zelfondertekend
certificaat.

Om te zien welke gebruikers een versleutelde verbinding gebruiken, voer je het volgende uit:
query (Prestatieschema moet AAN staan):

    mysql> SELECT sbt.variable_value AS tls_version, t2.variable_value AS-codering, processlist_user AS-gebruiker, processlist_host AS-host
            FROM performance_schema.status_by_thread AS sbt
            JOIN performance_schema.threads AS t ON t.thread_id = sbt.thread_id
            JOIN performance_schema.status_by_thread AS t2 ON t2.thread_id = t.thread_id
            WHERE sbt.variable_name = 'Ssl_version' and t2.variable_name = 'Ssl_cipher'
            ORDER BY tls_version;

[comment]: # ({/30b5ee7b-30b5ee7b})

[comment]: # ({fda36821-fda36821})
### Vereiste modus

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

[comment]: # ({5f820388-9ebeae19})
#### MySQL-configuratie

Moderne versies van de database zijn kant-en-klaar voor 'vereist'
[encryptiemodus](/manual/appendix/install/db_encrypt#terminology). EEN
server-side certificaat wordt gemaakt na de eerste installatie en lancering.

Maak gebruikers en rollen aan voor de hoofdcomponenten:


    mysql> CREATE USER   
     'zbx_srv'@'%' IDENTIFIED WITH mysql_native_password BY '<strong_password>',   
     'zbx_web'@'%' IDENTIFIED WITH mysql_native_password BY '<strong_password>'
     REQUIRE SSL   
     PASSWORD HISTORY 5; 

    mysql> CREATE ROLE 'zbx_srv_role', 'zbx_web_role'; 

    mysql> GRANT SELECT, UPDATE, DELETE, INSERT, CREATE, DROP, ALTER, INDEX, REFERENCES ON zabbix.* TO 'zbx_srv_role'; 
    mysql> GRANT SELECT, UPDATE, DELETE, INSERT ON zabbix.* TO 'zbx_web_role'; 

    mysql> GRANT 'zbx_srv_role' TO 'zbx_srv'@'%'; 
    mysql> GRANT 'zbx_web_role' TO 'zbx_web'@'%'; 

    mysql> SET DEFAULT ROLE 'zbx_srv_role' TO 'zbx_srv'@'%'; 
    mysql> SET DEFAULT ROLE 'zbx_web_role' TO 'zbx_web'@'%';

Merk op dat het X.509-protocol niet wordt gebruikt om de identiteit te controleren, maar de
gebruiker is geconfigureerd om alleen versleutelde verbindingen te gebruiken. Zie [MySQL
documentatie](https://dev.mysql.com/doc/refman/8.0/en/create-user.html#create-user-tls)
voor meer details over het configureren van gebruikers.

Uitvoeren om de verbinding te controleren (socketverbinding kan niet worden gebruikt om de beveiliging te testen
aansluitingen):

    $ mysql -u zbx_srv -p -h 10.211.55.9 --ssl-mode=VEREIST

Controleer de huidige status en beschikbare coderingssuites:

    mysql> status
    --------------
    mysql Ver 8.0.21 voor Linux op x86_64 (MySQL Community Server - GPL)

    Verbindings-ID: 62
    Huidige databank:
    Huidige gebruiker: zbx_srv@bfdb.local
    SSL: het gebruikte cijfer is TLS_AES_256_GCM_SHA384


    mysql> TOON SESSIESTATUS ZOALS 'Ssl_cipher_list'\G;
    ************************** 1e rij ********************* ******
    Variabele_naam: Ssl_cipher_list
    Value: TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE- RSA-AES128-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSG-CMAES128 SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-AES256-RSA-AES256-RSA GCM-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA:DHE-RSA-AES128- SHA:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES256-SHA:CAMELLIA256-SHA:CAMELLIA128-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256-SHA256:HAAES2: AES128-SHA
    1 rij in set (0,00 sec)

    FOUT:
    Geen zoekopdracht opgegeven

[comment]: # ({/5f820388-9ebeae19})

[comment]: # ({68afdcc8-68afdcc8})
#### Voorkant

Om alleen-transportversleuteling in te schakelen voor verbindingen tussen Zabbix
frontend en de database:

- Controleer *Database TLS-codering*
- Laat *Verifieer databasecertificaat* niet aangevinkt

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

[comment]: # ({/68afdcc8-68afdcc8})

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

Om alleen-transportversleuteling in te schakelen voor verbindingen tussen server en
de database, configureer */etc/zabbix/zabbix\_server.conf*:

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

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

[comment]: # ({c93ff04e-fa9ec203})
### CA-modus verifiëren

Kopieer de vereiste MySQL CA naar de Zabbix frontend-server, wijs de juiste toe
permissies om de webserver dit bestand te laten lezen.

::: noteclassic
 *Controleer of CA*-modus niet werkt op SLES 12 en RHEL 7 vanwege:
oudere MySQL-bibliotheken.
:::

[comment]: # ({/c93ff04e-fa9ec203})

[comment]: # ({8c171f0a-9776435f})
#### Voorkant

Versleuteling inschakelen met certificaatverificatie voor verbindingen
tussen Zabbix frontend en de database:

- Controleer *Database TLS-codering* en *Verifieer databasecertificaat*
- Geef pad op naar Database TLS CA-bestand

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

Als alternatief kan dit worden ingesteld in */etc/zabbix/web/zabbix.conf.php*:

    ...
    $DB['ENCRYPTIE'] = true;
    $DB['KEY_FILE'] = '';
    $DB['CERT_FILE'] = '';
    $DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';
    $DB['VERIFY_HOST'] = false;
    $DB['CIPHER_LIST'] = '';
    ...

Los problemen met de gebruiker op met behulp van de opdrachtregeltool om te controleren of de verbinding is
mogelijk voor gewenste gebruiker:

    $ mysql -u zbx_web -p -h 10.211.55.9 --ssl-mode=VEREIST --ssl-ca=/var/lib/mysql/ca.pem

[comment]: # ({/8c171f0a-9776435f})

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

Versleuteling inschakelen met certificaatverificatie voor verbindingen
tussen Zabbix-server en de database, configure
*/etc/zabbix/zabbix\_server.conf*:

    ...
    DBHost=10.211.55.9
    DBName=zabbix
    DBUser=zbx_srv
    DBPassword=<strong_password>
    DBTLSConnect=verify_ca
    DBTLSCAFile=/etc/ssl/mysql/ca.pem
    ...

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

[comment]: # ({fa5d4760-fa5d4760})
### Controleer de volledige modus

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

[comment]: # ({ec9599a1-22fb0ddd})
#### MySQL configuratie

Stel de MySQL CE server configuratieoptie (* /etc/my.cnf.d/server-tls.cnf *) in op:

```ini
[mysqld]
...
# in deze voorbeelden bevinden de sleutels zich in de MySQL CE datadir-directory
ssl_ca=ca.pem
ssl_cert=server-cert.pem
ssl_key=server-key.pem

require_secure_transport=ON
tls_version=TLSv1.3
...
```

Sleutels voor de MySQL CE-server en -client (Zabbix frontend) moeten handmatig worden aangemaakt volgens de MySQL CE-documentatie: [SSL- en RSA-certificaten en sleutels maken met MySQL](https://dev.mysql.com/doc/refman/8.0/en/creating-ssl-rsa-files-using-mysql.html) of [SSL-certificaten en sleutels maken met openssl](https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-files-using-openssl.html)

::: noteimportant
 Het MySQL-servercertificaat moet het
veld Common Name bevatten dat is ingesteld op de FQDN-naam, omdat de Zabbix frontend de DNS-naam zal gebruiken om te communiceren met de database of het IP-adres van de databasehost.
:::

Maak MySQL-gebruiker aan:

```sql
mysql> CREATE USER
  'zbx_srv'@'%' IDENTIFIED WITH mysql_native_password BY '<sterk_wachtwoord>',
  'zbx_web'@'%' IDENTIFIED WITH mysql_native_password BY '<sterk_wachtwoord>'
  REQUIRE X509
  PASSWORD HISTORY 5;
```

Controleer of het mogelijk is om in te loggen met die gebruiker:

```sh
$ mysql -u zbx_web -p -h 10.211.55.9 --ssl-mode=VERIFY_IDENTITY --ssl-ca=/var/lib/mysql/ca.pem --ssl-cert=/var/lib/mysql/client-cert.pem --ssl-key=/var/lib/mysql/client-key.pem
```

[comment]: # ({/ec9599a1-22fb0ddd})

[comment]: # ({59e6c738-2f3a5c57})
#### Frontend

Om versleuteling met volledige verificatie voor verbindingen tussen de Zabbix frontend en de database mogelijk te maken:

-   Vink het selectievakje Database TLS-encryptie en Databasecertificaat verifiëren aan
-   Specificeer het pad naar het Database TLS-sleutelbestand
-   Specificeer het pad naar het Database TLS CA-bestand
-   Specificeer het pad naar het Database TLS-certificaatbestand

Merk op dat *Database hostverificatie* aangevinkt en uitgeschakeld is - deze stap kan niet worden overgeslagen voor MySQL.

::: notewarning
 De lijst van ciphers
moet leeg zijn, zodat de frontend en de server het vereiste algoritme kunnen onderhandelen dat wordt ondersteund door beide partijen.
:::

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

Als alternatief kan dit worden ingesteld in */etc/zabbix/web/zabbix.conf.php*:

```php
...
// Gebruikt voor TLS-verbinding met strikt gedefinieerde lijst van algoritmes.
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '/etc/ssl/mysql/client-key.pem';
$DB['CERT_FILE'] = '/etc/ssl/mysql/client-cert.pem';
$DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-GC';
...
// of
...
// Gebruikt voor TLS-verbinding zonder gedefinieerde lijst van algoritmes - geselecteerd door MySQL-server
$DB['ENCRYPTION'] = true;
$DB['KEY_FILE'] = '/etc/ssl/mysql/client-key.pem';
$DB['CERT_FILE'] = '/etc/ssl/mysql/client-cert.pem';
$DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';
$DB['VERIFY_HOST'] = true;
$DB['CIPHER_LIST'] = '';
...
```

[comment]: # ({/59e6c738-2f3a5c57})

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

Versleuteling inschakelen met volledige verificatie voor verbindingen tussen:
Zabbix-server en de database, configureren
*/etc/zabbix/zabbix\_server.conf*:

    ...
    DBHost=10.211.55.9
    DBName=zabbix
    DBU-gebruiker=zbx_srv
    DBPassword=<strong_password>
    DBTLSConnect=verify_full
    DBTLSCAFile=/etc/ssl/mysql/ca.pem
    DBTLSCertFile=/etc/ssl/mysql/client-cert.pem
    DBTLSKeyFile=/etc/ssl/mysql/client-key.pem
    ...

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