Настройка собственного SSL‑сертификата для пользовательского интерфейса Staffcop (UI)¶
По умолчанию Staffcop использует самоподписанный сертификат. Из-за этого при входе в веб‑интерфейс браузер показывает предупреждение: «Ваше соединение не защищено». Для внутренних систем это допустимо, но если веб‑интерфейс доступен из внешней сети или в организации действуют политики безопасности, требуется установить собственный сертификат SSL для UI.
Staffcop состоит из веб‑интерфейса (UI) и агентов. Обе части работают через Nginx, но с разными настройками SSL. Чтобы Nginx различал их, URI для пользовательского интерфейса и обращения агентов должны быть разными. При этом они могут указывать на один IP адрес.
Опасно
Агент Staffcop должен работать только с оригинальными файлами сертификата и ключа. Не удаляйте и не перемещайте файлы сертификата и ключа из директории /var/lib/staffcop/CA. Менять можно только сертификат UI.
Далее в инструкции приведены два способа настройки собственного сертификата для UI.
Способы настройки¶
Инструкция описывает два способа привязки SSL‑сертификата к URI пользовательского интерфейса
Способ |
Описание |
Когда использовать |
|---|---|---|
Раздельные конфигурационные |
Исходный файл |
Плюс: легко откатить изменения, если удалить копию и перезагрузить Nginx. |
Единый конфигурационный |
Оба серверных блока прописываются в одном файле |
Плюс: быстрее и проще, все настройки собраны в одном месте. |
Если вы планируете экспериментировать с настройками или не уверены в результате, рекомендуем использовать раздельные файлы. Он безопаснее, так как сохраняет исходную конфигурацию агентов нетронутой.
Раздельные конфигурационные файлы¶
Чтобы привязать SSL-сертификат к URI пользовательского интерфейса:
Получите SSL‑сертификат .crt и приватный ключ .key. Это можно сделать различными способами.
Примечание
Обратите внимание, что при генерации ключей — например, при помощи Windows Server Certificate Authority (CA) — могут появиться лишние записи, что приведет к ошибкам в работе Nginx.
Убедитесь, что файлы имеют корректный формат:
сертификат .key:
-----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY-----сертификат .crt:
-----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
Разместите приватный ключ и сертификат на сервере в папке /var/lib/staffcop/CA без замены уже существующих в ней файлов.
Внимание
В этой папке хранятся ключи агентов Staffcop, их замена может нарушить работу системы. Разместите новые ключи рядом с ними.
Создайте копию конфигурационного файла /etc/nginx/sites-available/ssl.staffcop:
cp /etc/nginx/sites-available/ssl.staffcop /etc/nginx/sites-available/ssl.staffcopui
Откройте исходный конфигурационный файл ssl.staffcop:
sudo nano /etc/nginx/sites-available/ssl.staffcop
Приведите следующие поля к указанному виду:
Поле
Значение
location
^/agent/$
server_name
URI агентского интерфейса.
Здесь можно указать несколько DNS-записей.
Откройте копию конфигурационного файла:
sudo nano /etc/nginx/sites-available/ssl.staffcopui
закомментируйте первые две строки:
# client_max_body_size # large_client_header_buffers
приведите следующие поля к указанному виду:
Поле
Значение
server_name
URI пользовательского интерфейса.
Здесь можно указать несколько DNS-записей.ssl_certificate
Путь к ssl сертификату для UI.
ssl_certificate_key
Путь к приватному ключу SSL-сертификата для UI.
ssl_client_certificate
Удалите или закомментируйте строку (поставьте # в начале).
ssl_verify_depth
1
ssl_verify_client
off
Примечание
Чтобы вести раздельные логи для UI и агента, укажите пути к логам UI в полях access_log и error_log.
Создайте символьную ссылку на новый конфигурационный файл:
ln -s /etc/nginx/sites-available/ssl.staffcopui /etc/nginx/sites-enabled
Проверьте правильность новой конфигурации Nginx:
sudo nginx -t
Примените новую конфигурацию:
systemctl reload nginx
Единый конфигурационный файл¶
Для удобства работы новые настройки можно добавить в уже существующий конфигурационный файл.
Для этого:
Откройте конфигурационный файл:
sudo nano /etc/nginx/sites-available/ssl.staffcop
Приведите его к виду:
client_max_body_size 10G; large_client_header_buffers 16 65536; server { server_name 10.10.13.12; #IP сервера Staffcop listen 443; #listen [::]:4443 ssl http2; ssl on; ssl_certificate /var/lib/staffcop/CA/server.crt; ssl_certificate_key /var/lib/staffcop/CA/server.key; ssl_client_certificate /var/lib/staffcop/CA/client.crt; ssl_verify_depth 2; ssl_verify_client optional; ssl_session_timeout 1d; ssl_session_tickets off; ssl_stapling on; ssl_protocols TLSv1.3 TLSv1.2; ssl_ecdh_curve secp384r1; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384; access_log /var/log/staffcop/https.access.log; error_log /var/log/staffcop/https.error.log; client_body_timeout 3600s; client_header_timeout 3600s; location /agent { include /etc/nginx/uwsgi_params_staffcop; uwsgi_pass unix:/var/lib/staffcop/wsgi.sock; } include /etc/nginx/staffcop_*; } server { server_name FQDN сервера Staffcop; listen 443; #listen [::]:4443 ssl http2; ssl on; ssl_certificate /home/support/ваш сертификат; ssl_certificate_key /home/support/ваш ключ; ssl_client_certificate /var/lib/staffcop/CA/client.crt; ssl_verify_depth 1; ssl_verify_client off; access_log /var/log/staffcop/https.access.log; error_log /var/log/staffcop/https.error.log; client_body_timeout 3600s; client_header_timeout 3600s; location / { include /etc/nginx/uwsgi_params_staffcop; uwsgi_pass unix:/var/lib/staffcop/ui_wsgi.sock; } include /etc/nginx/staffcop_*; }Примечание
Если вы настраиваете доступ к веб-интерфейсу через FQDN имя сервера Staffcop, перейдите в Параметры сервера и укажите в блоке Домен или адрес сервера новое имя. В ином случае у вас перестанут строиться PDF-отчеты и возникнут проблемы по работе с инцидентами.
Проверьте правильность новой конфигурации nginx:
sudo nginx -t
Примените новую конфигурацию:
systemctl reload nginx
Последнее обновление: 21.05.26