Cобственный сертификат для пользовательского интерфейса (UI)

URI пользовательского интерфейса и URI для обращения агентов должны быть разными. При этом они могут указывать на один IP адрес.

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

  1. Получите SSL-сертификат. Это можно сделать различными способами.

Примечание

Обратите внимание, что при генерации ключей (например при помощи certificate authority windows), могут появиться лишние записи, что приведёт к ошибкам в работе nginx. Общий вид сертификатов:

* для сертификата.key:

  -----BEGIN RSA PRIVATE KEY-----
  ...
  -----END RSA PRIVATE KEY-----

* для сертификата .crt:

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

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

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

sudo nano /etc/nginx/sites-available/ssl.staffcop

Приведите следующие поля к указанному виду:

Поле

Значение

location

^/agent/$

server_name

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

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

sudo nano /etc/nginx/sites-available/ssl.staffcopui

Приведите следующие поля к указанному виду:

Поле

Значение

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 ui.sce.local;
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl on;
    ssl_certificate /var/lib/staffcop/CA/server_UI.crt;
    ssl_certificate_key /var/lib/staffcop/CA/server_UI.key;
    ssl_client_certificate /var/lib/staffcop/CA/client_UI.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_*;
}

server
{
    server_name agent.sce.local;
    listen 443 ssl http2;
    listen [::]:443 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/ui_wsgi.sock;
    }

    include /etc/nginx/staffcop_*;
}
  1. Проверьте правильность новой конфигурации nginx:

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

systemctl reload nginx