Apache HTTP Server
Для работы серверных компонентов Indeed CM на ОС Linux настройте веб-сервер Apache в качестве обратного прокси-сервера.
- RHEL-based
- Debian-based
RHEL и производные дистрибутивы
Установка
Установите веб-сервер Apache с помощью следующих команд:
sudo yum install httpd
sudo systemctl enable httpd
sudo systemctl start httpd
Или установите веб-сервер Apache из исходного кода. Подробнее на портале Apache.
Выпуск SSL/TLS сертификата
Для настройки защищенного соединения выпустите SSL/TLS сертификат на имя рабочей станции с установленным веб-сервером Apache. Используйте самоподписанный сертификат или выпустите сертификат на УЦ:
- Самоподписанный сертификат
- Выпуск сертификата на УЦ
Создайте самоподписанный корневой сертификат утилитой openssl:
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -out ca.crt -days 3650 -subj "/CN=selfCA"Создайте файл конфигурации SSL.conf, который содержит настройки для генерации запроса на сертификат веб-сервера (вместо SERVER_FQDN подставьте DNS-имя рабочей станции с установленным Apache):
nano SSL.conf
Пример файла SSL.conf для генерации самоподписанного сертификата
Создайте утилитой openssl запрос на сертификат и выпустите сертификат для веб-сервера с помощью самоподписанного сертификата:
openssl genrsa -out SSL.key 2048
openssl req -new -sha256 -out SSL.csr -key SSL.key -config SSL.conf
openssl x509 -req -days 365 -in SSL.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile SSL.conf -extensions req_ext -out SSL.crtСкопируйте файлы сертификата и ключа в папку, которая указана в файле конфигурации Apache:
sudo cp ./SSL.crt /etc/httpd/ssl/certs
sudo cp ./SSL.key /etc/httpd/ssl/privateДобавьте сертификат корневого УЦ в доверенные на рабочей станции с установленным Apache.
sudo cp ./ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extractСделайте сертификат доверенным в домене, например, с помощью групповых политик.
Выпустите сертификат на УЦ, например на Microsoft CA, экспортируйте данный сертификат в формате PFX (с закрытым ключом, с цепочкой корневых/промежуточных УЦ) на рабочую станцию с установленным веб-сервером Apache.
к сведениюСубъект (Subject) сертификата должен содержать FQDN сервера Apache.
Дополнительное имя субъекта (Subject Alternative Name) сертификата должно содержать атрибут DNS-имя (DNS Name) (FQDN сервера Apache). Например: server.demo.local или соответствующую запись с подстановочными знаками, например: *.demo.local (Wildcard certificate).
Улучшенный ключ (Enhanced Key Usage) сертификата должен содержать значение Проверка подлинности сервера (Server Authentication).Разделите PFX сертификат на файл цепочки сертификатов и ключ, оставьте файл закрытого ключа без пароля и подставьте имя импортированного файла вместо PFXFILE:
openssl pkcs12 -in PFXFILE.pfx -chain -nokeys | sed -ne '/-BEGIN CERTIFICATE/,/END CERTIFICATE/p' > SSL.crt
openssl pkcs12 -in PFXFILE.pfx -cacerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > root-ca.crt
openssl pkcs12 -in PFXFILE.pfx -nocerts -out SSLencrypted.key
openssl rsa -in SSLencrypted.key -out SSL.key
rm SSLencrypted.keyФайл цепочки сертификатов SSL.crt должен быть следующего вида:
-----BEGIN CERTIFICATE-----
#Ваш сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Промежуточный сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Корневой сертификат#
-----END CERTIFICATE-----На рабочей станции с установленным веб-сервером Apache добавьте сертификат корневого УЦ в список доверенных.
sudo cp root-ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extractСкопируйте файлы цепочки сертификатов и ключа в папку, которая будет указана в найстройках сайта Apache:
sudo mkdir /etc/ssl
sudo cp SSL.crt /etc/httpd/ssl/certs
sudo cp SSL.key /etc/httpd/ssl/private
Настройка модулей и конфигурации
Установите модуль mod_ssl:
sudo yum install -y mod_ssl
Добавьте в конфигурационный файл 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.
Создайте файл сайта /etc/httpd/conf.d/SERVER_FQDN.conf:
sudo touch /etc/httpd/conf.d/SERVER_FQDN.conf
Заполните файл рекомендуемым содержимым.
предупреждениеВ параметрах
SSLCertificateFile
иSSLCertificateKeyFile
указаны пути к созданным/импортированным в предыдущих шагах файлам сертификата и закрытого ключа. Проверьте указанные пути и имена файлов.
Рекомендуемое содержимое файла SERVER_FQDN.conf
Перечитайте файл конфигурации:
sudo httpd -t
sudo systemctl restart httpd
Debian и производные дистрибутивы
Установка
Установите веб-сервер Apache с помощью следующих команд:
sudo apt install apache2
sudo systemctl enable apache2
sudo service apache2 start
Или установите веб-сервер Apache из исходного кода. Подробнее на портале Apache.
Выпуск SSL/TLS сертификата
Для настройки защищенного соединения выпустите SSL/TLS сертификат на имя рабочей станции с установленным веб-сервером Apache. Используйте самоподписанный сертификат или выпустите сертификат на УЦ.
- Самоподписанный сертификат
- Выпуск сертификата на УЦ
Создайте самоподписанный корневой сертификат утилитой openssl:
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -out ca.crt -days 3650 -subj "/CN=selfCA"Создайте файл конфигурации SSL.conf, который содержит настройки для генерации запроса на сертификат веб-сервера (вместо SERVER_FQDN подставьте DNS-имя рабочей станции с установленным Apache):
nano SSL.conf
Пример файла SSL.conf для генерации самоподписанного сертификата
Создайте утилитой openssl запрос на сертификат и выпустите сертификат для веб-сервера с помощью самоподписанного сертификата:
openssl genrsa -out SSL.key 2048
openssl req -new -sha256 -out SSL.csr -key SSL.key -config SSL.conf
openssl x509 -req -days 365 -in SSL.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile SSL.conf -extensions req_ext -out SSL.crtСкопируйте файлы сертификата и ключа в папку, которая указана в файле конфигурации Apache:
sudo cp ./SSL.crt /etc/ssl/certs/
sudo cp ./SSL.key /etc/ssl/private/Добавьте сертификат корневого УЦ в доверенные на рабочей станции с установленным Apache.
sudo cp ./ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extractСделайте сертификат доверенным в домене, например, с помощью групповых политик.
Выпустите сертификат на УЦ, например на Microsoft CA, экспортируйте данный сертификат в формате PFX (с закрытым ключом, с цепочкой корневых/промежуточных УЦ) на рабочую станцию с установленным веб-сервером Apache.
к сведениюСубъект (Subject) сертификата должен содержать FQDN сервера Apache.
Дополнительное имя субъекта (Subject Alternative Name) сертификата должно содержать атрибут DNS-имя (DNS Name) (FQDN сервера Apache). Например: server.demo.local или соответствующую запись с подстановочными знаками, например: *.demo.local (Wildcard certificate).
Улучшенный ключ (Enhanced Key Usage) сертификата должен содержать значение Проверка подлинности сервера (Server Authentication).Разделите PFX сертификат на файл цепочки сертификатов и ключ, сделайте файл закрытого ключа без пароля (вместо PFXFILE подставьте имя импортированного файла):
openssl pkcs12 -in PFXFILE.pfx -chain -nokeys | sed -ne '/-BEGIN CERTIFICATE/,/END CERTIFICATE/p' > SSL.crt
openssl pkcs12 -in PFXFILE.pfx -cacerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > root-ca.crt
openssl pkcs12 -in PFXFILE.pfx -nocerts -out SSLencrypted.key
openssl rsa -in SSLencrypted.key -out SSL.key
rm SSLencrypted.keyФайл цепочки сертификатов SSL.crt должен быть следующего вида:
-----BEGIN CERTIFICATE-----
#Ваш сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Промежуточный сертификат#
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
#Корневой сертификат#
-----END CERTIFICATE-----На рабочей станции с установленным веб-сервером Apache добавьте сертификат корневого УЦ в список доверенных.
sudo cp root-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates -fСкопируйте файлы цепочки сертификатов и ключа в папку, которая будет указана в найстройках сайта Apache:
sudo cp ./SSL.crt /etc/ssl/certs/
sudo cp ./SSL.key /etc/ssl/private/
Настройка модулей и конфигурации
Apache реализован в виде ядра и модулей, которые подключаются по необходимости использования дополнительной функциональности.
- Для работы системы включите модули:
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod rewrite
sudo systemctl restart apache2 - Добавьте в конфигурационный файл apache2.conf (расположение по умолчанию /etc/apache2/apache2.conf) следующие директивы: В данном месте и далее замените SERVER_FQDN на имя используемого сервера.
Listen 3003
LimitRequestLine 16384
LimitRequestFieldSize 16384
ServerName SERVER_FQDN
Header append X-FRAME-OPTIONS "SAMEORIGIN"
Header set X-Content-Type-Options "nosniff"
При установке Apache в ОС Astra Linux в файле apache2.conf может потребоваться отключение параметра AstraMode, подробнее на портале Astra Linux.
Настройка сайта
Для работы Indeed CM создайте сайт в Apache, чтобы он обслуживал запросы и отправлял их на проксируемый адрес – сервис Indeed CM.
Создайте файл сайта /etc/apache2/sites-available/SERVER_FQDN.conf
sudo touch /etc/apache2/sites-available/SERVER_FQDN.conf
Заполните файл рекомендуемым содержимым.
предупреждениеВ параметрах
SSLCertificateFile
иSSLCertificateKeyFile
указаны пути к созданным/импортированным в предыдущих шагах файлам сертификата и закрытого ключа. Проверьте указанные пути и имена файлов.
Рекомендуемое содержимое файла SERVER_FQDN.conf
Перечитайте файл конфигурации и включите файл сайта:
sudo a2ensite SERVER_FQDN
sudo apachectl configtest
sudo systemctl restart apache2