Page tree

Для работы серверных компонентов Рутокен KeyBox на ОС Linux настройте веб-сервер Angie PRO в качестве обратного прокси-сервера:

  1. Установите Angie PRO.
  2. Установите SSL/TLS-сертификат.
  3. Настройте конфигурационный файл angie.conf.

Выберите инструкцию в зависимости от ОС рабочей станции, где вы устанавливаете Angie PRO.

Debian-based

Angie PRO поставляется в закрытом репозитории, доступ к которому предоставляется вендором в рамках лицензии. Вместе с лицензией вы получите клиентский сертификат angie-repo.crt, закрытый ключ angie-repo.key и файл лицензии license.pem.

  1. Скопируйте клиентский сертификат и ключ в отдельный каталог и выдайте apt права на чтение.

    sudo mkdir -p /etc/ssl/angie/
    sudo cp angie-repo.crt /etc/ssl/angie/angie-repo.crt
    sudo cp angie-repo.key /etc/ssl/angie/angie-repo.key
    sudo chown -R _apt:nogroup /etc/ssl/angie/
  2. Установите пакеты, необходимые для подключения apt-репозитория.
    sudo apt install apt-transport-https ca-certificates curl gnupg2
  3. Импортируйте официальный ключ, используемый apt для проверки подлинности пакетов.
    sudo curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg https://angie.software/keys/angie-signing.gpg
  4. Подключите apt-репозиторий Angie PRO.
    echo "deb https://download.angie.software/angie-pro/$(. /etc/os-release && echo "$ID/$VERSION_ID $VERSION_CODENAME") main" | sudo tee /etc/apt/sources.list.d/angie.list > /dev/null
  5. Создайте файл /etc/apt/apt.conf.d/90download-angie со следующим содержимым.
    Acquire::https::download.angie.software::Verify-Peer "true";
    Acquire::https::download.angie.software::Verify-Host "true";
    Acquire::https::download.angie.software::SslCert "/etc/ssl/angie/angie-repo.crt";
    Acquire::https::download.angie.software::SslKey "/etc/ssl/angie/angie-repo.key";
  6. Установите Angie PRO.
    sudo apt update
    sudo apt install angie-pro
  7. Скопируйте файл лицензии в каталог /etc/angie/ и проверьте конфигурацию.
    sudo cp license.pem /etc/angie/license.pem
    sudo angie -t

Документация по установке на другие ОС доступна на сайте Angie.

Установка SSL/TLS-сертификата

Как создать SSL/TLS-сертификат

Чтобы установить SSL/TLS-сертификат на веб-сервер:

  1. Скопируйте файлы сертификата и ключа в папку, которая указана в файле конфигурации Angie PRO.
    sudo cp ./SSL.crt /etc/ssl/certs/
    sudo cp ./SSL.key /etc/ssl/private/
  2. Добавьте сертификат корневого УЦ в доверенные на рабочей станции с установленным Angie PRO.
    sudo cp ./ca.crt /usr/local/share/ca-certificates/
    sudo update-ca-certificates -f
  3. Сделайте сертификат доверенным в домене, например, с помощью групповых политик.
  4. Выдайте системному пользователю Angie (задан в директиве user файла /etc/angie/angie.conf) права на чтение файлов сертификата.

Настройка конфигурационного файла

Для работы Рутокен KeyBox настройте Angie PRO, чтобы веб-сервер обслуживал запросы и отправлял их на проксируемый адрес — сервис Рутокен KeyBox.

Работа Angie PRO и его модулей определяется в конфигурационном файле angie.conf, расположенном в каталоге /etc/angie.

КонтекстДирективаЗначение по умолчаниюРекомендуемое значениеКомментарий
httpproxy_buffer_size4k|8k16kУвеличивается размер прокси буферов для передачи информации в http-запросах
proxy_buffers8 4k|8 8k4 16kУвеличивается размер прокси буферов для передачи информации в http-запросах
types_hash_max_size10244096Увеличивается размер хэш-таблиц для хранения информации из-за большого количества проксируемых сервисов
client_max_body_size1m10mУвеличивается допустимый размер загружаемых в систему файлов
large_client_header_buffers4 8k4 16kУвеличивается допустимый размер буферов для чтения больших заголовков запроса клиента. Например, длинные URL или файлы cookie
serverlisten80443 sslИзмените порт прослушивания на протокол HTTPS, по умолчанию Angie PRO настроен на HTTP
3003 sslУкажите порт 3003 для дополнительного контекста server, если Рутокен KeyBox настроен на работу с клиентскими агентами
ssl_certificate—/etc/ssl/private/SSL.crtДля работы по HTTPS укажите путь к файлу с цепочкой сертификатов (SSL сертификат, сертификаты промежуточного и корневого УЦ)
ssl_certificate_key—/etc/ssl/private/SSL.keyДля работы по HTTPS укажите путь к закрытому ключу SSL сертификата
ssl_verify_clientoffoptional_no_caДобавьте в случае авторизации по сертификату (используется клиентскими агентами)
locationproxy_pass—*Один экземпляр контекста location направляет запросы на один адрес — сервис Рутокен KeyBox. Таким образом, количество контекстов location должно быть равно количеству сервисов Рутокен KeyBox.

Точка проксирования указывается в формате:
http://localhost:*PORT*/cm/*SERVICENAME*
http://localhost:*PORT*/*AGENTSERVICENAME*
Где PORT — порт, на котором запущен сервис Рутокен KeyBox, SERVICENAME и AGENTSERVICENAME — имя запущенного сервиса
include—/etc/angie/conf.d/proxy.confНекоторые директивы описываются для каждого location. Для компактности конфигурационного файла рекомендуется создать файл с часто используемым набором директив и подключать его в каждый location вместо описывания набора целиком
proxy_http_version1.01.1Версия 1.1 рекомендуется для keepalive-подключений и NTLM-аутентификации
proxy_cache_bypass—$http_upgradeОпределяет условия, при которых ответ не берется из кеша
proxy_set_header—Upgrade $http_upgradeОпределяет переход с HTTP/1.1 на веб-сокет после установки соединения
Connection keep-aliveДля использования keepalive-подключений
Host $hostДля сохранения в заголовках имени сервера Angie PRO при их передаче сервисам Рутокен KeyBox
X-Real-IP $remote_addrПо умолчанию работа в режиме обратного прокси использует нестандартные заголовки о пользовательском IP адресе, что требует задания данной директивы
X-Forwarded-For $proxy_add_x_forwarded_forОпределяет формирование заголовка для корректного проксирования. Если в изначальном заголовке нет поля X-Forwarded-For, то $proxy_add_x_forwarded_for = $remote_addr
X-Forwarded-Proto $schemeВеб-сервер принимает запросы по HTTPS и проксирует их к HTTP-сервисам Рутокен KeyBox для корректной подмены протокола
fastcgi_buffers8 4k|8k16 16kОпределяет количество и размер буферов для чтения ответов от FastCGI-сервера на одно подключение
fastcgi_buffer_size4k|8k32kОпределяет размер буфера для чтения первой части ответа от FastCGI-сервера
proxy_set_header—x-ssl-client-cert $ssl_client_escaped_certДиректива передавать клиентский сертификат при проксировании. Используется клиентскими агентами для авторизации по сертификату

Из-за многократного описания контекстов location определенный набор директив повторяется. Для удобства конфигурации вынесите этот набор директив в отдельный файл и включите директивы из этого файла в описание контекста (директива include).

  1. Создайте файл с многократно используемыми директивами. Можно разместить такой файл с расширением CONF в каталоге /etc/angie/conf.d/.
    Рекомендуемое содержимое файла proxy.conf для работы с Рутокен KeyBox
    proxy_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;


  2. Сконфигурируйте основной файл конфигурации Angie PRO. Убедитесь, что имена контекстов location совпадают с путем к проксируемому сервису.
    user angie;
    worker_processes auto;
    error_log /var/log/angie/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;
    
     large_client_header_buffers 4 16k;
    
     log_format  main  '[$time_local] $remote_addr VIA $scheme --- $status --- $request \n $ssl_client_fingerprint';
     access_log  /var/log/angie/access.log  main;
     sendfile                on;
     tcp_nopush              on;
     include                 /etc/angie/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/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5001/cm/mc;    }
         location /cm/ss
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5002/cm/ss;    }
         location /cm/rss
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5003/cm/rss;   }
         location /cm/api
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5004/cm/api;   }
         location /cm/credprovapi
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5005/cm/credprovapi;   }
         location /cm/oidc
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5008/cm/oidc;  }
         location /cm/wizard
         {   proxy_pass http://localhost:5009;  }
         #location /api
         #{  include /etc/angie/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/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5006/agentregistrationapi;  }
          location /agentserviceapi
          { include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5007/agentserviceapi;
                                              proxy_set_header   x-ssl-client-cert $ssl_client_escaped_cert;  }
     }
    }


  3. Чтобы применить изменения в конфигурационном файле, перезагрузите конфигурацию или перезапустите Angie PRO.
    sudo angie -s reload

RHEL-based

Angie PRO поставляется в закрытом репозитории, доступ к которому предоставляется вендором в рамках лицензии. Вместе с лицензией вы получите клиентский сертификат angie-repo.crt, закрытый ключ angie-repo.key и файл лицензии license.pem.

  1. Скопируйте клиентский сертификат и ключ в отдельный каталог.

    sudo mkdir -p /etc/ssl/angie/
    sudo cp angie-repo.crt /etc/ssl/angie/angie-repo.crt
    sudo cp angie-repo.key /etc/ssl/angie/angie-repo.key
  2. Создайте файл /etc/yum.repos.d/angie.repo со следующим содержимым:
    [angie-pro]
    name=Angie PRO repo
    baseurl=https://download.angie.software/angie-pro/almalinux/$releasever/
    sslclientcert=/etc/ssl/angie/angie-repo.crt
    sslclientkey=/etc/ssl/angie/angie-repo.key
    gpgcheck=1
    enabled=1
    gpgkey=https://angie.software/keys/angie-signing.gpg.asc

    Значение baseurl зависит от ОС. Полный список значений baseurl приведен в документации Angie.
  3. Установите Angie PRO.
    sudo yum install angie-pro
  4. Скопируйте файл лицензии в каталог /etc/angie/ и проверьте конфигурацию.
    sudo cp license.pem /etc/angie/license.pem
    sudo angie -t

Документация по установке на другие ОС доступна на сайте Angie.

Установка SSL/TLS-сертификата

Как создать SSL/TLS-сертификат

Чтобы установить SSL/TLS-сертификат на веб-сервер:

  1. Скопируйте файлы сертификата и ключа в папку, которая указана в файле конфигурации Angie PRO.
    sudo cp ./SSL.crt /etc/ssl/certs/
    sudo cp ./SSL.key /etc/ssl/private/
  2. Добавьте сертификат корневого УЦ в доверенные на рабочей станции с установленным Angie PRO.
    sudo cp ./ca.crt /etc/pki/ca-trust/source/anchors/
    sudo update-ca-trust extract
  3. Сделайте сертификат доверенным в домене, например, с помощью групповых политик.
  4. Выдайте системному пользователю Angie (задан в директиве user файла /etc/angie/angie.conf) права на чтение файлов сертификата.

Настройка конфигурационного файла

Для работы Рутокен KeyBox настройте Angie PRO, чтобы веб-сервер обслуживал запросы и отправлял их на проксируемый адрес — сервис Рутокен KeyBox.

Работа Angie PRO и его модулей определяется в конфигурационном файле angie.conf, расположенном в каталоге /etc/angie.

КонтекстДирективаЗначение по умолчаниюРекомендуемое значениеКомментарий
httpproxy_buffer_size4k|8k16kУвеличивается размер прокси буферов для передачи информации в http-запросах
proxy_buffers8 4k|8 8k4 16kУвеличивается размер прокси буферов для передачи информации в http-запросах
types_hash_max_size10244096Увеличивается размер хэш-таблиц для хранения информации из-за большого количества проксируемых сервисов
client_max_body_size1m10mУвеличивается допустимый размер загружаемых в систему файлов
large_client_header_buffers4 8k4 16kУвеличивается допустимый размер буферов для чтения больших заголовков запроса клиента. Например, длинные URL или файлы cookie
serverlisten80443 sslИзмените порт прослушивания на протокол HTTPS, по умолчанию Angie PRO настроен на HTTP
3003 sslУкажите порт 3003 для дополнительного контекста server, если Рутокен KeyBox настроен на работу с клиентскими агентами
ssl_certificate—/etc/ssl/private/SSL.crtДля работы по HTTPS укажите путь к файлу с цепочкой сертификатов (SSL сертификат, сертификаты промежуточного и корневого УЦ)
ssl_certificate_key—/etc/ssl/private/SSL.keyДля работы по HTTPS укажите путь к закрытому ключу SSL сертификата
ssl_verify_clientoffoptional_no_caДобавьте в случае авторизации по сертификату (используется клиентскими агентами)
locationproxy_pass—*Один экземпляр контекста location направляет запросы на один адрес — сервис Рутокен KeyBox. Таким образом, количество контекстов location должно быть равно количеству сервисов Рутокен KeyBox.

Точка проксирования указывается в формате:
http://localhost:*PORT*/cm/*SERVICENAME*
http://localhost:*PORT*/*AGENTSERVICENAME*
Где PORT — порт, на котором запущен сервис Рутокен KeyBox, SERVICENAME и AGENTSERVICENAME — имя запущенного сервиса
include—/etc/angie/conf.d/proxy.confНекоторые директивы описываются для каждого location. Для компактности конфигурационного файла рекомендуется создать файл с часто используемым набором директив и подключать его в каждый location вместо описывания набора целиком
proxy_http_version1.01.1Версия 1.1 рекомендуется для keepalive-подключений и NTLM-аутентификации
proxy_cache_bypass—$http_upgradeОпределяет условия, при которых ответ не берется из кеша
proxy_set_header—Upgrade $http_upgradeОпределяет переход с HTTP/1.1 на веб-сокет после установки соединения
Connection keep-aliveДля использования keepalive-подключений
Host $hostДля сохранения в заголовках имени сервера Angie PRO при их передаче сервисам Рутокен KeyBox
X-Real-IP $remote_addrПо умолчанию работа в режиме обратного прокси использует нестандартные заголовки о пользовательском IP адресе, что требует задания данной директивы
X-Forwarded-For $proxy_add_x_forwarded_forОпределяет формирование заголовка для корректного проксирования. Если в изначальном заголовке нет поля X-Forwarded-For, то $proxy_add_x_forwarded_for = $remote_addr
X-Forwarded-Proto $schemeВеб-сервер принимает запросы по HTTPS и проксирует их к HTTP-сервисам Рутокен KeyBox для корректной подмены протокола
fastcgi_buffers8 4k|8k16 16kОпределяет количество и размер буферов для чтения ответов от FastCGI-сервера на одно подключение
fastcgi_buffer_size4k|8k32kОпределяет размер буфера для чтения первой части ответа от FastCGI-сервера
proxy_set_header—x-ssl-client-cert $ssl_client_escaped_certДиректива передавать клиентский сертификат при проксировании. Используется клиентскими агентами для авторизации по сертификату

Из-за многократного описания контекстов location определенный набор директив повторяется. Для удобства конфигурации вынесите этот набор директив в отдельный файл и включите директивы из этого файла в описание контекста (директива include).

  1. Создайте файл с многократно используемыми директивами. Можно разместить такой файл с расширением CONF в каталоге /etc/angie/conf.d/.
    Рекомендуемое содержимое файла proxy.conf для работы с Рутокен KeyBox
    proxy_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;


  2. Сконфигурируйте основной файл конфигурации Angie PRO. Убедитесь, что имена контекстов location совпадают с путем к проксируемому сервису.
    user angie;
    worker_processes auto;
    error_log /var/log/angie/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;
    
     large_client_header_buffers 4 16k;
    
     log_format  main  '[$time_local] $remote_addr VIA $scheme --- $status --- $request \n $ssl_client_fingerprint';
     access_log  /var/log/angie/access.log  main;
     sendfile                on;
     tcp_nopush              on;
     include                 /etc/angie/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/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5001/cm/mc;    }
         location /cm/ss
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5002/cm/ss;    }
         location /cm/rss
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5003/cm/rss;   }
         location /cm/api
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5004/cm/api;   }
         location /cm/credprovapi
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5005/cm/credprovapi;   }
         location /cm/oidc
         {   include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5008/cm/oidc;  }
         location /cm/wizard
         {   proxy_pass http://localhost:5009;  }
         #location /api
         #{  include /etc/angie/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/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5006/agentregistrationapi;  }
          location /agentserviceapi
          { include /etc/angie/conf.d/proxy.conf;   proxy_pass http://localhost:5007/agentserviceapi;
                                              proxy_set_header   x-ssl-client-cert $ssl_client_escaped_cert;  }
     }
    }


  3. Чтобы применить изменения в конфигурационном файле, перезагрузите конфигурацию или перезапустите Angie PRO.
    sudo angie -s reload
  • No labels