Перейти к основному содержимому

Apache HTTP Server

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

Установка

Установите веб-сервер Apache с помощью следующих команд:

sudo yum install httpd
sudo systemctl enable httpd
sudo systemctl start httpd

Или установите веб-сервер Apache из исходного кода. Подробнее на портале Apache.

Выпуск SSL/TLS сертификата

Для настройки защищенного соединения выпустите SSL/TLS сертификат на имя рабочей станции с установленным веб-сервером Apache. Используйте самоподписанный сертификат или выпустите сертификат на УЦ:

  1. Создайте самоподписанный сертификат утилитой openssl (вместо SERVER_FQDN подставьте DNS-имя рабочей станции с установленным веб-сервером Apache):

    sudo mkdir /etc/httpd/ssl
    sudo openssl req -x509 -nodes -addext "subjectAltName=DNS:SERVER_FQDN,DNS:www.SERVER_FQDN" -days 730 -newkey rsa:2048 -keyout /etc/httpd/ssl/SSL.key -out /etc/httpd/ssl/SSL.crt
  2. Добавьте сертификат в доверенные на локальной рабочей станции:

    sudo cp /etc/httpd/ssl/SSL.crt /etc/pki/ca-trust/source/anchors/SSL.crt
    sudo update-ca-trust extract
  3. Сделайте сертификат доверенным в домене, например, с помощью групповых политик.

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

  1. Установите модуль mod_ssl:

    sudo yum install -y mod_ssl
  2. Добавьте в конфигурационный файл httpd.conf (расположение по умолчанию /etc/httpd/conf/httpd.conf) следующие директивы:

    Listen 3003
    LimitRequestLine 16384
    LimitRequestFieldSize 16384
    ServerName SERVER_FQDN
    Header append X-FRAME-OPTIONS "SAMEORIGIN"
    Header set X-Content-Type-Options "nosniff"

    В данном месте и далее замените SERVER_FQDN на имя используемого сервера.

Настройка сайта

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

  1. Создайте файл сайта /etc/httpd/conf.d/SERVER_FQDN.conf:

    sudo touch /etc/httpd/conf.d/SERVER_FQDN.conf
  2. Заполните файл рекомендуемым содержимым.

    предупреждение

    В параметрах SSLCertificateFile и SSLCertificateKeyFile указаны пути к созданным/импортированным в предыдущих шагах файлам сертификата и закрытого ключа. Проверьте указанные пути и имена файлов.

Рекомендуемое содержимое файла SERVER_FQDN.conf
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}/$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
Protocols h2 http/1.1
SSLCertificateFile /etc/httpd/ssl/SSL.crt
SSLCertificateKeyFile /etc/httpd/ssl/SSL.key
SSLCipherSuite @SECLEVEL=1:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

ErrorLog “logs/error.log”
CustomLog “logs/access.log” combined

SSLEngine on
SSLProtocol -all +TLSv1.2
SSLHonorCipherOrder off
SSLCompression off
SSLSessionTickets on
SSLUseStapling off
SSLProxyEngine on
SetEnv nokeepalive ssl-unclean-shutdown
RequestHeader set X-Forwarded-Proto https
Header always set Strict-Transport-Security "max-age=63072000"

ProxyPreserveHost On

ProxyPass /cm/mc http://localhost:5001/cm/mc
ProxyPassReverse /cm/mc http://localhost:5001/cm/mc

ProxyPass /cm/ss http://localhost:5002/cm/ss
ProxyPassReverse /cm/ss http://localhost:5002/cm/ss

ProxyPass /cm/rss http://localhost:5003/cm/rss
ProxyPassReverse /cm/rss http://localhost:5003/cm/rss

ProxyPass /cm/api http://localhost:5004/cm/api
ProxyPassReverse /cm/api http://localhost:5004/cm/api

ProxyPass /cm/credprovapi http://localhost:5005/cm/credprovapi
ProxyPassReverse /cm/credprovapi http://localhost:5005/cm/credprovapi

ProxyPass /cm/oidc http://localhost:5008/cm/oidc
ProxyPassReverse /cm/oidc http://localhost:5008/cm/oidc

ProxyPass /cm/wizard http://localhost:5009/cm/wizard
ProxyPassReverse /cm/wizard http://localhost:5009/cm/wizard

</VirtualHost>

<VirtualHost *:3003>
protocols h2 http/1.1

SSLCertificateFile /etc/httpd/ssl/SSL.crt
SSLCertificateKeyFile /etc/httpd/ssl/SSL.key
SSLCipherSuite @SECLEVEL=1:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

ErrorLog “logs/error.log”
CustomLog “logs/access.log” combined

SSLEngine on
SSLProtocol -all +TLSv1.2
SSLHonorCipherOrder off
SSLCompression off
SSLSessionTickets on
SSLUseStapling off
SSLProxyEngine on
RequestHeader set X-Forwarded-Proto https
Header always set Strict-Transport-Security "max-age=63072000"

ProxyPass /agentregistrationapi http://localhost:5006/agentregistrationapi
ProxyPassReverse /agentregistrationapi http://localhost:5006/agentregistrationapi

<Location "/agentserviceapi">
SSLVerifyClient optional_no_ca
SSLOptions +ExportCertData
RequestHeader unset x-ssl-client-cert
RequestHeader set x-ssl-client-cert "expr=%{escape:%{SSL_CLIENT_CERT}}"
#RequestHeader set x-ssl-client-cert "expr=%{escape:%{SSL_CLIENT_S_DN}}"

ProxyPass http://localhost:5007/agentserviceapi
ProxyPassReverse http://localhost:5007/agentserviceapi
</Location>
</VirtualHost>
  1. Перечитайте файл конфигурации:

    sudo httpd -t
    sudo systemctl restart httpd