Перейти к основному содержимому
Версия: Indeed Certificate Manager 7.0

Angie PRO

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

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

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

Установка Angie PRO

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) права на чтение файлов сертификата.

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

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

Работа 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, если Indeed CM настроен на работу с клиентскими агентами.
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 направляет запросы на один адрес — сервис Indeed CM. Таким образом, количество контекстов location должно быть равно количеству сервисов Indeed CM.

Точка проксирования указывается в формате:
http://localhost:*PORT*/cm/*SERVICENAME*
http://localhost:*PORT*/*AGENTSERVICENAME*
Где PORT — порт, на котором запущен сервис Indeed CM, 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_headerUpgrade $http_upgradeОпределяет переход с HTTP/1.1 на веб-сокет после установки соединения.
Connection keep-aliveДля использования keepalive-подключений.
Host $hostДля сохранения в заголовках имени сервера Angie PRO при их передаче сервисам Indeed CM.
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-сервисам Indeed CM для корректной подмены протокола.
fastcgi_buffers8 4k|8k16 16kОпределяет количество и размер буферов для чтения ответов от FastCGI-сервера на одно подключение.
fastcgi_buffer_size4k|8k32kОпределяет размер буфера для чтения первой части ответа от FastCGI-сервера.
proxy_set_headerx-ssl-client-cert $ssl_client_escaped_certДиректива передавать клиентский сертификат при проксировании. Используется клиентскими агентами для авторизации по сертификату.

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

  1. Создайте файл с многократно используемыми директивами. Можно разместить такой файл с расширением CONF в каталоге /etc/angie/conf.d/.

    Рекомендуемое содержимое файла proxy.conf для работы с Indeed CM
    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 совпадают с путем к проксируемому сервису.

    Пример файла angie.conf для работы с Indeed CM
    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