Page tree

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

  1. Установите веб-сервер.
  2. Установите SSL/TLS-сертификат.
  3. Настройте модули и конфигурацию.
  4. Настройте сайт Apache.

RHEL-based

Установка веб-сервера

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

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

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

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

Установите TLS-сертификат на веб-сервер:

  1. Скопируйте файлы сертификата и ключа в папку, которая указана в файле конфигурации Apache:

    sudo mkdir /etc/ssl/private/
    sudo cp ./SSL.crt /etc/httpd/ssl/certs
    sudo cp ./SSL.key /etc/httpd/ssl/private
     
  2. Добавьте сертификат корневого УЦ в доверенные на рабочей станции с установленным Apache.

    sudo cp root-ca.crt /usr/local/share/ca-certificates/
    sudo update-ca-certificates -f
     
  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 на имя используемого сервера.

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

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

  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/certs/SSL.crt
   SSLCertificateKeyFile /etc/httpd/ssl/private/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 /keybox/mc http://localhost:5001/keybox/mc
       ProxyPassReverse /keybox/mc http://localhost:5001/keybox/mc

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

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

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

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

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

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

       #ProxyPass /api http://localhost:5010/api
       #ProxyPassReverse /api http://localhost:5010/api

</VirtualHost>

<VirtualHost *:3003>
   protocols h2 http/1.1

   SSLCertificateFile /etc/httpd/ssl/certs/SSL.crt
   SSLCertificateKeyFile /etc/httpd/ssl/private/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 ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/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>


3. Перечитайте файл конфигурации:

sudo httpd -t
sudo systemctl restart httpd

Debian-based

Установка веб-сервера

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

sudo apt install apache2
sudo systemctl enable apache2
sudo service apache2 start

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

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

Установите TLS-сертификат на веб-сервер:

  1. Скопируйте файлы сертификата и ключа в папки для хранения сертификатов и закрытых ключей:

    sudo cp ./SSL.crt /etc/ssl/certs
    sudo cp ./SSL.key /etc/ssl/private
     
  2. Добавьте сертификат корневого УЦ в доверенные на рабочей станции с установленным Apache:

    sudo cp root-ca.crt /usr/local/share/ca-certificates/
    sudo update-ca-certificates -f
     
  3. Сделайте сертификат доверенным в домене, например, с помощью групповых политик.

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

Apache реализован в виде ядра и модулей, которые подключаются по необходимости использования дополнительной функциональности.

  1. Для работы системы включите модули:

    sudo a2enmod proxy
    sudo a2enmod proxy_http
    sudo a2enmod ssl
    sudo a2enmod headers
    sudo a2enmod rewrite
    sudo systemctl restart apache2
     
  2. Добавьте в конфигурационный файл apache2.conf (расположение по умолчанию /etc/apache2/apache2.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 на имя используемого сервера.


При установке Apache в ОС Astra Linux в файле apache2.conf может потребоваться отключение параметра AstraMode, подробнее на портале Astra Linux.

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

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

  1. Создайте файл сайта /etc/apache2/sites-available/SERVER_FQDN.conf

    sudo touch /etc/apache2/sites-available/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/ssl/certs/SSL.crt
    SSLCertificateKeyFile /etc/ssl/private/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 ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/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 /keybox/mc http://localhost:5001/keybox/mc
    ProxyPassReverse /keybox/mc http://localhost:5001/keybox/mc
    
    ProxyPass /keybox/ss http://localhost:5002/keybox/ss
    ProxyPassReverse /keybox/ss http://localhost:5002/keybox/ss
    
    ProxyPass /keybox/rss http://localhost:5003/keybox/rss
    ProxyPassReverse /keybox/rss http://localhost:5003/keybox/rss
    
    ProxyPass /keybox/api http://localhost:5004/keybox/api
    ProxyPassReverse /keybox/api http://localhost:5004/keybox/api
    
    ProxyPass /keybox/credprovapi http://localhost:5005/keybox/credprovapi
    ProxyPassReverse /keybox/credprovapi http://localhost:5005/keybox/credprovapi
    
    ProxyPass /keybox/oidc http://localhost:5008/keybox/oidc
    ProxyPassReverse /keybox/oidc http://localhost:5008/keybox/oidc
    
    ProxyPass /keybox/wizard http://localhost:5009/keybox/wizard
    ProxyPassReverse /keybox/wizard http://localhost:5009/keybox/wizard
    
    #ProxyPass /api http://localhost:5010/api
    #ProxyPassReverse /api http://localhost:5010/api
    
    </VirtualHost>
    
    <VirtualHost *:3003>
    protocols h2 http/1.1
    
    SSLCertificateFile /etc/ssl/certs/SSL.crt
    SSLCertificateKeyFile /etc/ssl/private/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 ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/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>
  3. Перечитайте файл конфигурации и включите файл сайта:

    sudo a2ensite SERVER_FQDN
    sudo apachectl configtest
    sudo systemctl restart apache2
  • No labels