[comment]: # ({a804241c-5407a56a})
# 6 Conexión segura a la interfaz web

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

[comment]: # ({5ca67f7f-7cadd09e})
#### Descripción general

Esta sección proporciona los pasos de configuración de Zabbix y ejemplos de configuración para conexiones TLS seguras entre el frontend de Zabbix y el servidor de Zabbix.

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

[comment]: # ({b3284585-ec63018e})
#### Configuración

De forma predeterminada, la comunicación entre el frontend de Zabbix y el server de Zabbix no está cifrada. Para una mayor seguridad, habilite TLS en ambos lados. A continuación se muestra un ejemplo de la forma más sencilla de hacerlo.

1\. Genere certificados y claves.

Cree un directorio de trabajo:

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

Cree un certificado de CA (ajuste el valor `MyZabbixCA` para que coincida con el nombre común real):

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

Genere una clave privada y un certificado para el server de Zabbix (ajuste el valor `zabbix-server.example.com` para que coincida con el nombre común real):

```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
```

Genere una clave privada y un certificado para el frontend de Zabbix (ajuste el valor `zabbix-frontend-node` para que coincida con el nombre común real):

```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\. Establezca los permisos adecuados. 

Para el server de Zabbix (ajuste el propietario/grupo según el usuario del daemon del server de Zabbix de su distribución):

```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
```

Para el frontend (ajuste el propietario/grupo según el usuario del servidor web de su distribución):

```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\. Configure el server de Zabbix.

En `zabbix_server.conf` agregue:

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

Luego reinicie el server:

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

4\. Configure el frontend de Zabbix.

Durante la [instalación de la interfaz web](/manual/installation/frontend), habilite la opción *Encrypt connections from Web interface* (y la opción *Verify server certificate issuer and subject*, si es necesario) y complete los campos *TLS CA file*, *TLS key file*, *TLS certificate file* (y los campos *Server TLS certificate issuer* y *Server TLS certificate subject*, si es necesario):

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

|Parámetro|Descripción|
|--|--------|
|*TLS CA file*|Especifique la ruta completa al archivo del certificado de la autoridad de certificación (CA) utilizado para verificar el certificado del server.|
|*TLS key file*|Especifique la ruta completa al archivo de clave privada del cliente correspondiente al certificado del cliente.|
|*TLS certificate file*|Especifique la ruta completa al archivo del certificado del cliente si se requiere autenticación TLS mutua.|
|*Server TLS certificate issuer*|Especifique un nombre distintivo (DN) del emisor para compararlo con el certificado del server.|
|*Server TLS certificate subject*|Especifique un nombre distintivo (DN) del sujeto para compararlo con el certificado del server.|

En instalaciones existentes, edite los siguientes campos en `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';
// Opcionalmente:
// $ZBX_SERVER_TLS['CERTIFICATE_ISSUER']  = '/CN=MyZabbixCA/';
// $ZBX_SERVER_TLS['CERTIFICATE_SUBJECT'] = '/CN=zabbix-server.example.com/';
```

5\. Verifique el cifrado confirmando que no haya mensajes de error en el frontend de Zabbix o en el archivo de registro del server de Zabbix:

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

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