Перейти к основному содержанию

Zabbix 5.0 — настройка SSL в nginx

Zabbix

По умолчанию 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

zabbix

Создаём папку /etc/zabbix/ssl для хранения ключей, в ней размещаем файлы ключа и приватного сертификата:

mkdir /etc/zabbix/ssl
cd /etc/zabbix/ssl
touch zabbix-cert.pem
touch zabbix-key.pem

zabbix

Содержимое сертификата 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.

zabbix

Теги

 

Похожие материалы

Let's Encrypt — настройка certbot в Ubuntu 22

Установим и настроим certbot для получения и обновления SSL сертификатов Let's Encrypt. Операционная система Ubuntu 22.04.4, веб-сервер Nginx. Настраивать будем на примере развёрнутого SeaFile.

Теги