Cобственный сертификат для пользовательского интерфейса (UI)¶
URI пользовательского интерфейса и URI для обращения агентов должны быть разными. При этом они могут указывать на один IP адрес.
Чтобы привязать SSL-сертификат к URI пользовательского интерфейса:
Получите SSL-сертификат. Это можно сделать различными способами.
Примечание
Обратите внимание, что при генерации ключей (например при помощи certificate authority windows), могут появиться лишние записи, что приведёт к ошибкам в работе nginx. Общий вид сертификатов:
* для сертификата.key: -----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY----- * для сертификата .crt: -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
Разместите приватный ключ и сертификат на сервере в папке /var/lib/staffcop/CA.
Создайте копию конфигурационного файла /etc/nginx/sites-available/ssl.staffcop
cp /etc/nginx/sites-available/ssl.staffcop /etc/nginx/sites-available/ssl.staffcopui
Отредактируйте конфигурационный файл:
sudo nano /etc/nginx/sites-available/ssl.staffcopПриведите следующие поля к указанному виду:
Поле
Значение
location
^/agent/$
server_name
URI агентского интерфейса.
Здесь можно указать несколько DNS-записей.
Отредактируйте созданный конфигурационный файл:
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.
Создайте символьную ссылку на новый конфигурационный файл:
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 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_*; }
Проверьте правильность новой конфигурации nginx:
sudo nginx -t
Примените новую конфигурацию:
systemctl reload nginx