Для работы серверных компонентов Rutoken KeyBox на ОС Linux настройте веб-сервер Nginx в качестве обратного прокси-сервера:
- Установите веб-сервер.
- Установите SSL/TLS-сертификат.
- Настройте конфигурационный файл.
RHEL-based
Установка веб-сервера
Для установки Nginx должен быть подключен и настроен репозиторий пакетов nginx. Если это не было сделано автоматически, добавьте репозиторий вручную.
Установите пакеты, необходимые для подключения yum-репозитория:
sudo yum install yum-utils
Для подключения yum-репозитория создайте файл с именем/etc/yum.repos.d/nginx.repoсо следующим содержимым:
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Выполните следующую команду:
sudo yum install nginx
В случае запроса подтверждения GPG-ключа проверьте, что отпечаток ключа совпадает с 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62.
Документация по установке на прочие ОС доступна на портале NGINX.
Установка TLS-сертификата
Установите TLS-сертификат на веб-сервер.
Скопируйте файлы сертификата и ключа в папку, которая указана в файле конфигурации nginx:
sudo cp ./SSL.crt /etc/ssl/certs/ sudo cp ./SSL.key /etc/ssl/private/
Добавьте сертификат корневого УЦ в доверенные на рабочей станции с установленным nginx.
sudo cp ./ca.crt /etc/pki/ca-trust/source/anchors/ sudo update-ca-trust extract
- Сделайте сертификат доверенным в домене, например, с помощью групповых политик.
- Выдайте учетной записи nginx права на чтение файлов сертификата.
Настройка конфигурационного файла
Для работы Rutoken KeyBox настройте nginx, чтобы веб-сервер обслуживал запросы и отправлял их на проксируемый адрес – сервис RutokenKeyBox.
Работа nginx и его модулей определяется в конфигурационном файле nginx.conf. В зависимости от операционной системы он расположен в каталоге /usr/local/nginx/conf, /etc/nginx или /usr/local/etc/nginx.
Вследствие использования в конфигурации многократного описания контекстовlocation, определенный набор директив будет повторяться.
Для удобства конфигурации вынесите данный набор директив в отдельный файл, а в описании контекста включите директивы из данного файла (директива include).
Создайте файл с многократно используемыми директивами. Можно разместить такой файл с расширением CONF в каталоге /etc/nginx/conf.d/.
Рекомендуемое содержимое файла proxy.conf для работы с Rutoken KeyBoxproxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k;
Сконфигурируйте основной файл конфигурации nginx. Имена контекстовlocationдолжны совпадать с путем к проксируемому сервису.
Пример файла nginx.conf для работы с Rutoken KeyBoxuser nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; events { worker_connections 1024; } http { proxy_buffer_size 64k; proxy_buffers 4 64k; types_hash_max_size 4096; add_header X-Frame-Options sameorigin always; add_header X-Content-Type-Options nosniff; log_format main '[$time_local] $remote_addr VIA $scheme --- $status --- $request \n $ssl_client_fingerprint'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; include /etc/nginx/mime.types; default_type application/octet-stream; server { listen 443 ssl; server_name $hostname; ssl_certificate "/etc/ssl/certs/SSL.crt"; ssl_certificate_key "/etc/ssl/private/SSL.key"; location /cm/mc { include /etc/nginx/conf.d/proxy.conf; proxy_pass http://localhost:5001/cm/mc; } location /cm/ss { include /etc/nginx/conf.d/proxy.conf; proxy_pass http://localhost:5002/cm/ss; } location /cm/rss { include /etc/nginx/conf.d/proxy.conf; proxy_pass http://localhost:5003/cm/rss; } location /cm/api { include /etc/nginx/conf.d/proxy.conf; proxy_pass http://localhost:5004/cm/api; } location /cm/credprovapi { include /etc/nginx/conf.d/proxy.conf; proxy_pass http://localhost:5005/cm/credprovapi; } location /cm/oidc { include /etc/nginx/conf.d/proxy.conf; proxy_pass http://localhost:5008/cm/oidc; } location /cm/wizard { proxy_pass http://localhost:5009; } #location /api #{ include /etc/nginx/conf.d/proxy.conf; proxy_pass http://localhost:5010/api; } } server { listen 3003 ssl; server_name $hostname; ssl_certificate "/etc/ssl/certs/SSL.crt"; ssl_certificate_key "/etc/ssl/private/SSL.key"; ssl_verify_client optional_no_ca; location /agentregistrationapi { include /etc/nginx/conf.d/proxy.conf; proxy_pass http://localhost:5006/agentregistrationapi; } location /agentserviceapi { include /etc/nginx/conf.d/proxy.conf; proxy_pass http://localhost:5007/agentserviceapi; proxy_set_header x-ssl-client-cert $ssl_client_escaped_cert; } } }
Примените изменения в конфигурационном файле. Для этого перезагрузите конфигурацию или перезапустите nginx. Для перезагрузки конфигурации выполните команду:
sudo nginx -s reload
Debian-based
Установка веб-сервера
Установите пакеты, необходимые для подключения apt-репозитория:
Ubuntu:
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
Debian:
sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
Импортируйте официальный ключ, используемый apt для проверки подлинности пакетов:
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Для подключения apt-репозитория выполните следующую команду:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
Выполните следующую команду:
sudo apt update sudo apt install nginx
Документация по установке на прочие ОС доступна на портале NGINX.
Установка TLS-сертификата
Установите TLS-сертификат на веб-сервер.
Скопируйте файлы сертификата и ключа в папку, которая указана в файле конфигурации nginx.
sudo cp ./SSL.crt /etc/ssl/certs/ sudo cp ./SSL.key /etc/ssl/private/
Добавьте сертификат корневого УЦ в доверенные на рабочей станции с установленным nginx.
sudo cp ./ca.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates -f
- Сделайте сертификат доверенным в домене, например, с помощью групповых политик.
- Выдайте учетной записи www-data права на чтение файлов сертификата.
Настройка конфигурационного файла
Для работы Рутокен KeyBox требуется настроить nginx, чтобы он обслуживал запросы и отправлял их на проксируемый адрес – сервис RutokenKeyBox.
Работа nginx и его модулей определяется в конфигурационном файлеnginx.conf. В зависимости от операционной системы он расположен в каталоге/usr/local/nginx/conf,/etc/nginxили/usr/local/etc/nginx.
Из-за использования в конфигурации многократного описания контекстов location, определенный набор директив будет повторяться.
Для удобства конфигурации вынесите данный набор директив в отдельный файл, а в описании контекста включите директивы из данного файла (директива include).
Создайте файл с многократно используемыми директивами. Можно разместить такой файл с расширением CONF в каталоге /etc/nginx/conf.d/.
Рекомендуемое содержимое файла proxy.conf для работы с Rutoken KeyBoxproxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k;
Сконфигурируйте основной файл конфигурации nginx. Имена контекстов location должны совпадать с путем к проксируемому сервису.
Примените изменения в конфигурационном файле. Для этого перезагрузите конфигурацию или перезапустите nginx. Для перезагрузки конфигурации выполните команду:
sudo nginx -s reload