По умолчанию nginx для Zabbix 5.0 LTS настроен на работу по протоколу HTTP. Настроим HTTPS.
Нам понадобятся SSL сертификаты.
SSL сертификаты
SSL сертификат можно купить, можно сделать самоподписанные сертификаты. Я же буду делать SSL сертификаты, подписанные корпоративным центром сертификации.
Генерирую CSR и KEY для SSL сертификатов с помощью подсистемы Linux. Извините, работаю на винде.
Windows 10 — генерация CSR и KEY для SSL сертификатов с помощью подсистемы Linux
Подписываем CSR в корпоративном центре сертификации. Получаем приватный сертификат в Base 64.
В процессе работы мне понадобилось сконвертировать цепочку P7B в PEM.
Windows — конвертация P7B в PEM с помощью подсистемы Linux
Создаём папку /etc/zabbix/ssl для хранения ключей, в ней размещаем файлы ключа и приватного сертификата:
mkdir /etc/zabbix/ssl
cd /etc/zabbix/ssl
touch zabbix-cert.pem
touch zabbix-key.pem
Содержимое сертификата zabbix.pem и ключа zabbix.key копируем в созданные файлы zabbix-cert.pem и zabbix-key.pem.
Поскольку центр сертификации корпоративный, понадобится добавить корневые сертификаты на Zabbix сервер:
Добавление корневых сертификатов в Ubuntu 18.04
Правим конфигурационный файл /etc/zabbix/nginx.conf:
server {
listen 80;
listen 443 ssl;
server_name example.com;
charset utf-8;
ssl_certificate /etc/zabbix/ssl/zabbix-cert.pem;
ssl_certificate_key /etc/zabbix/ssl/zabbix-key.pem;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
root /usr/share/zabbix;
index index.php;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location /assets {
access_log off;
expires 10d;
}
location ~ /\.ht {
deny all;
}
location ~ /(api\/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/var/run/php/zabbix.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
Теперь при входе на HTTP версию сайта будет происходить редирект на HTTPS версию.
Перезапускаем сервисы:
systemctl restart zabbix-server zabbix-agent nginx php7.2-fpm
Zabbix сервер работает по HTTPS.