Продолжаю статью о настройке Zabbix. Следующим шагом в настройке Заббикса будет замена доступа к веб с помощью протокола http на протокол https.
Шаг первый — создадим папку, где будут храниться ключи и сертификаты
mkdir -p /etc/nginx/ssl
Выдадим нужные права
chmod 640 -R /etc/nginx/ssl
создадим закрытый ключ сервера
openssl genrsa -out private.key 2048
Создаем CSR запрос
openssl req -new -sha256 -key private.key -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
——
Country Name (2 letter code) [XX]:RU
State or Province Name (full name) []:Moscow
Locality Name (eg, city) [Default City]:Moscow
Organization Name (eg, company) [Default Company Ltd]:LLC Company
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server’s hostname) []:monit.domen.ru
Email Address []:sysadmin@itsmart.ru
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
string is too short, it needs to be at least 4 bytes long
A challenge password []:
An optional company name []:
Пароль я не вводил
В файле server.csr получили файл запрос, содержимое которого необходимо передать в центр сертификации
cat server.csr
——BEGIN CERTIFICATE REQUEST——
….
——END CERTIFICATE REQUEST——
У меня центр сертификации StartSSL, он подписал мой запрос, выслал в ответ архив с сертификатами для разных веб-серверов.
Полученный файл копируем в /etc/nginx/ssl
Пусть это будет файл с именем monit_bundle.crt. Он уже содержит в себе сертификат сервера и ЦС.
Дальше настраиваем веб-сервер NGINX.
Пример настроек можно взять отсюда
Усиливаем безопасность
chmod 400 /etc/nginx/ssl/*
chown root:root /etc/nginx/ssl/*
Редактируем файл настроек
nano /etc/nginx/conf.d/zabbix.conf
Добавляем строки
В секцию server
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/monit_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
Проверяем корректность настроек
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Применяем новые настройки
systemctl reload nginx.service
Заходим по https://имя_сервера. Если все работает хорошо, то далее можно заняться оптимизацией ssl в nginx. Если все плохо, то исправляем ошибки и снова проверяем.
Пример файла конфигурации с ssl можно взять отсюда