Настройка собственного SSL‑сертификата для пользовательского интерфейса Staffcop (UI)

По умолчанию Staffcop использует самоподписанный сертификат. Из-за этого при входе в веб‑интерфейс браузер показывает предупреждение: «Ваше соединение не защищено». Для внутренних систем это допустимо, но если веб‑интерфейс доступен из внешней сети или в организации действуют политики безопасности, требуется установить собственный сертификат SSL для UI.

Staffcop состоит из веб‑интерфейса (UI) и агентов. Обе части работают через Nginx, но с разными настройками SSL. Чтобы Nginx различал их, URI для пользовательского интерфейса и обращения агентов должны быть разными. При этом они могут указывать на один IP адрес.

Опасно

Агент Staffcop должен работать только с оригинальными файлами сертификата и ключа. Не удаляйте и не перемещайте файлы сертификата и ключа из директории /var/lib/staffcop/CA. Менять можно только сертификат UI.

Далее в инструкции приведены два способа настройки собственного сертификата для UI.

Способы настройки

Инструкция описывает два способа привязки SSL‑сертификата к URI пользовательского интерфейса

Способ

Описание

Когда использовать

Раздельные конфигурационные
файлы

Исходный файл ssl.staffcop настраивается для агентов,
создается копия ssl.staffcopui для веб‑интерфейса.

Плюс: легко откатить изменения, если удалить копию и перезагрузить Nginx.
Исходная конфигурация агентов не пострадает.

Единый конфигурационный
файл

Оба серверных блока прописываются в одном файле ssl.staffcop.

Плюс: быстрее и проще, все настройки собраны в одном месте.
Минус: без бэкапа конфигурации вернуть исходное состояние проблематично.

Если вы планируете экспериментировать с настройками или не уверены в результате, рекомендуем использовать раздельные файлы. Он безопаснее, так как сохраняет исходную конфигурацию агентов нетронутой.

Раздельные конфигурационные файлы

Чтобы привязать SSL-сертификат к URI пользовательского интерфейса:

  1. Получите SSL‑сертификат .crt и приватный ключ .key. Это можно сделать различными способами.

Примечание

Обратите внимание, что при генерации ключей — например, при помощи Windows Server Certificate Authority (CA) — могут появиться лишние записи, что приведет к ошибкам в работе Nginx.

Убедитесь, что файлы имеют корректный формат:

  • сертификат .key:

    -----BEGIN RSA PRIVATE KEY-----
    ...
    -----END RSA PRIVATE KEY-----
    
  • сертификат .crt:

    -----BEGIN CERTIFICATE-----
    ...
    -----END CERTIFICATE-----
    
  1. Разместите приватный ключ и сертификат на сервере в папке /var/lib/staffcop/CA без замены уже существующих в ней файлов.

Внимание

В этой папке хранятся ключи агентов Staffcop, их замена может нарушить работу системы. Разместите новые ключи рядом с ними.

  1. Создайте копию конфигурационного файла /etc/nginx/sites-available/ssl.staffcop:

cp /etc/nginx/sites-available/ssl.staffcop /etc/nginx/sites-available/ssl.staffcopui
  1. Откройте исходный конфигурационный файл ssl.staffcop:

sudo nano /etc/nginx/sites-available/ssl.staffcop
  1. Приведите следующие поля к указанному виду:

Поле

Значение

location

^/agent/$

server_name

URI агентского интерфейса.
Здесь можно указать несколько DNS-записей.

  1. Откройте копию конфигурационного файла:

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.

  1. Создайте символьную ссылку на новый конфигурационный файл:

ln -s /etc/nginx/sites-available/ssl.staffcopui /etc/nginx/sites-enabled
  1. Проверьте правильность новой конфигурации Nginx:

sudo nginx -t
  1. Примените новую конфигурацию:

systemctl reload nginx

Единый конфигурационный файл

Для удобства работы новые настройки можно добавить в уже существующий конфигурационный файл.

Для этого:

  1. Откройте конфигурационный файл:

sudo nano /etc/nginx/sites-available/ssl.staffcop
  1. Приведите его к виду:

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-отчеты и возникнут проблемы по работе с инцидентами.

  1. Проверьте правильность новой конфигурации nginx:

sudo nginx -t
  1. Примените новую конфигурацию:

systemctl reload nginx

Последнее обновление: 21.05.26