Для работы серверных компонентов системы на ОС Linux требуется веб-сервер, работающий в режиме работы обратного прокси-сервера.
Apache — один из самых популярных HTTP-серверов, который также имеет возможность работы в режиме обратного прокси-сервера.
Установка Apache
Чтобы установить Apache, выполните следующие команды в зависимости от используемого дистрибутива или выбрав сборку из исходного кода:
RHEL и производные дистрибутивы
|
Debian и производные дистрибутивы
|
Установка из исходного кода
- Скачайте последний релиз с портала производителя.
- Из папки со скачанным дистрибутивом выполните эти команды:
При выполнении команд замените "NN" на версию скачанного дистрибутива, например, 2.4.57
|
Требования к установке, а также подробный процесс установки из исходного кода описаны на портале производителя.
Выпуск SSL/TLS сертификата
Для настройки защищенного соединения необходимо выпустить SSL/TLS сертификат на имя рабочей станции с установленным apache.
Возможно выпустить самоподписанный сертификат или сертификат с УЦ.
Самоподписанный сертификат
Создайте самоподписанный сертификат утилитой openssl (вместо
SERVER_FQDNподставьте DNS-имя рабочей станции с Apache):sudoopenssl req -x509 -nodes -addext"subjectAltName=DNS:SERVER_FQDN,DNS:www.SERVER_FQDN"-days 730 -newkey rsa:2048 -keyout/etc/apache2/ssl/SSL.key -out/etc/apache2/ssl/SSL.crtДобавьте сертификат в доверенные на локальной рабочей станции в соответствии с выбранной для настройки ОС.
Для RHEL и производных дистрибутивов:sudocp/etc/apache2/ssl/SSL.crt/etc/pki/ca-trust/source/anchors/SSL.crtsudoupdate-ca-trust extract
Для Debian и производных дистрибутивов:sudocp/etc/apache2/ssl/SSL.crt/usr/local/share/ca-certificates/sudoupdate-ca-certificates -f- Сделайте сертификат доверенным в домене, например, с помощью групповых политик.
Выпуск сертификата на УЦ
Выпустите сертификат на УЦ, например на Microsoft CA, экспортируйте данный сертификат в формате .pfx (с закрытым ключом, с цепочкой корневых/промежуточных УЦ) на рабочую станцию с установленным apache.
Субъект (Subject) сертификата должен содержать FQDN сервера Apache.
Дополнительное имя субъекта (Subject Alternative Name) сертификата должно содержать атрибут DNS-имя (DNS Name) (FQDN сервера Apache). Например: astra.demo.local или соответствующую запись с подстановочными знаками, например: *. demo.local (Wildcard certificate).
Улучшенный ключ (Enhanced Key Usage) сертификата должен содержать значение Проверка подлинности сервера (Server Authentication).Разделите .pfx сертификат на файл цепочки сертификатов и ключ, сделайте файл закрытого ключа без пароля (необходимо подставить имя импортированного файла вместо PFXFILE):
openssl pkcs12 -inPFXFILE.pfx -chain -nokeys |sed-ne'/-BEGIN CERTIFICATE/,/END CERTIFICATE/p'> SSL.crtopenssl pkcs12 -inPFXFILE.pfx -cacerts -nokeys |sed-ne'/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'> root-ca.crtopenssl pkcs12 -inPFXFILE.pfx -nocerts -out SSLencrypted.keyopenssl rsa -inSSLencrypted.key -out SSL.keyrmSSLencrypted.keyФайл цепочки сертификатов SSL.crt должен выглядеть так:
-----BEGIN CERTIFICATE-----#Ваш сертификат#-----END CERTIFICATE----------BEGIN CERTIFICATE-----#Промежуточный сертификат#-----END CERTIFICATE----------BEGIN CERTIFICATE-----#Корневой сертификат#-----END CERTIFICATE-----Добавьте на рабочую станцию с установленным apache сертификат корневого УЦ в список доверенных.
Для RHEL и производных дистрибутивов:sudocproot-ca.crt/etc/pki/ca-trust/source/anchors/sudoupdate-ca-trust extract
Для Debian и производных дистрибутивов:sudocproot-ca.crt/usr/local/share/ca-certificates/sudoupdate-ca-certificates -fСкопируйте файлы цепочки сертификатов и ключа в папку, которая будет указана в настройках сайта Apache:
sudocpSSL.crt/etc/apache2/ssl/sudocpSSL.key/etc/apache2/ssl/
Настройка модулей и конфигурации
Apache реализован в виде ядра и модулей, которые подключаются по необходимости использования дополнительной функциональности.
Для работы системы включите модули:
sudoa2enmod proxysudoa2enmod proxy_httpsudoa2enmod sslsudoa2enmod headerssudoa2enmod rewritesudosystemctl restart apache2- Добавьте следующие директивы в конфигурационный файл Apache (apache2.conf), по умолчанию расположенный по пути /etc/apache2/apache2.conf.
(в данном месте и далее замените "SERVER_FQDN" на имя используемого сервера)
|
При установке Apache в ОС Astra Linux в файле apache2.conf может потребоваться отключение параметра AstraMode, подробнее на портале Astra Linux.
Настройка сайта
Для работы Indeed CM требуется создать сайт в Apache, чтобы он обслуживал запросы и отправлял их на проксируемый адрес (сервис Indeed CM).
Создайте файл сайта /etc/apache2/sites-available/SERVER_FQDN.conf
sudotouch/etc/apache2/sites-available/SERVER_FQDN.confЗаполните файл рекомендуемым содержимым:
В параметрах SSLCertificateFile и SSLCertificateKeyFile указаны пути к созданным/импортированным в предыдущих шагах файлам сертификата и закрытого ключа, требуется проверить указанные пути и имена файлов.
<VirtualHost *:80>RewriteEngine OnRewriteCond %{HTTPS} !=onRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}/$1 [R=301,L]</VirtualHost>
<VirtualHost *:443>Protocols h2 http/1.1SSLCertificateFile /etc/apache2/ssl/SSL.crtSSLCertificateKeyFile /etc/apache2/ssl/SSL.keySSLCipherSuite@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-SHA384ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine onSSLProtocol -all +TLSv1.2SSLHonorCipherOrder offSSLCompression offSSLSessionTickets onSSLUseStapling offSSLProxyEngine onSetEnv nokeepalive ssl-unclean-shutdownRequestHeader set X-Forwarded-Proto httpsHeader always set Strict-Transport-Security"max-age=63072000"
ProxyPreserveHost On
ProxyPass /cm/mc http://localhost:5001/cm/mcProxyPassReverse /cm/mc http://localhost:5001/cm/mc
ProxyPass /cm/ss http://localhost:5002/cm/ssProxyPassReverse /cm/ss http://localhost:5002/cm/ss
ProxyPass /cm/rss http://localhost:5003/cm/rssProxyPassReverse /cm/rss http://localhost:5003/cm/rss
ProxyPass /cm/api http://localhost:5004/cm/apiProxyPassReverse /cm/api http://localhost:5004/cm/api
ProxyPass /cm/credprovapi http://localhost:5005/cm/credprovapiProxyPassReverse /cm/credprovapi http://localhost:5005/cm/credprovapi
ProxyPass /cm/oidc http://localhost:5008/cm/oidcProxyPassReverse /cm/oidc http://localhost:5008/cm/oidc
ProxyPass /cm/wizard http://localhost:5009/cm/wizardProxyPassReverse /cm/wizard http://localhost:5009/cm/wizard
</VirtualHost>
<VirtualHost *:3003>protocols h2 http/1.1
SSLCertificateFile /etc/apache2/ssl/SSL.crtSSLCertificateKeyFile /etc/apache2/ssl/SSL.keySSLCipherSuite@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 ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine onSSLProtocol -all +TLSv1.2SSLHonorCipherOrder offSSLCompression offSSLSessionTickets onSSLUseStapling offSSLProxyEngine onRequestHeader set X-Forwarded-Proto httpsHeader always set Strict-Transport-Security"max-age=63072000"
ProxyPass /agentregistrationapi http://localhost:5006/agentregistrationapiProxyPassReverse /agentregistrationapi http://localhost:5006/agentregistrationapi
<Location"/agentserviceapi">SSLVerifyClient optional_no_caSSLOptions +ExportCertDataRequestHeader unset x-ssl-client-certRequestHeader 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/agentserviceapiProxyPassReverse http://localhost:5007/agentserviceapi</Location></VirtualHost>Перечитайте файл конфигурации и включите файл сайта:
sudo a2ensite SERVER_FQDNsudo apachectl configtestsudo systemctl restart apache2