Page tree

  1. Для работы серверных компонентов Рутокен 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 /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
    
           #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 /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
      
      #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