Сервера приложений: интеграция Trusted Java и TrustedTLS¶
В предлагаемом ниже материале рассматриваются методики построения защищенного канала до серверов приложений (Tomcat, IBM Websphere, Oracle Weblogic) на базе продукта TrustedTLS (веб-сервера Apache версии 2.2) для обеспечения конфиденциальности информации и аутентификации пользователей в приложениях, разворачиваемых на этих серверах. (Методики были проверены на операционной системе RedHat Enterprise Linux/CentOS 5.3 x86.)
В частности, рассматриваются вопросы обеспечения взаимодействия в цепочке <Клиент> -
Продукт Trusted Java также может быть интегрирован в составе рассматриваемых решений как мост для доступа приложений на Java к криптографическим операциям при использовании следующих связок:
Apache + Trusted TLS 2.2 + CSP 3.6/3.6 R2 + Tomcat 5.5/6.0/7.0 + Trusted Java
Apache + Trusted TLS 2.2 + CSP 3.6/3.6 R2 + IBM Websphere 6.1/7.0 + Trusted Java
Apache + Trusted TLS 2.2 + CSP 3.6/3.6 R2 + Oracle WebLogic Server 10.3.2 + Trusted Java
Передача сертификатов от Apache-сервера серверам приложений¶
Для использования сертификатов клиента (и сервера) на стороне развернутого приложения предлагается использовать на стороне Apache-сервера возможность модуля mod_headers вставлять в заголовок запроса переменную с содержимым из SSL-переменных.
Предполагается, что на Apache-сервере уже настроен модуль mod_digt_tls.so
(продукт TrustedTLS) согласно прилагаемым к нему инструкциям.
В конфигурационном файле httpd.conf добавим строку загрузки модуля mod_headers LoadModule headers_module modules/mod_headers.so и в конфигурационном файле ssl.conf в секции
Пересылка запросов серверу приложений от Apache-сервера¶
Пересылку запросов на сервер приложений можно организовать с использованием
-
Apache-модуля mod_proxy, Специализированного WebServer Plug-ins
-
Apache-модуль Mod_proxy
Процесс интеграции
В конфигурационном файле httpd.conf добавим строку загрузки модуля mod_proxy.so
LoadModule proxy_module modules/mod_proxy.so
и в конфигурационном файле ssl.conf
в секции
As-host и AS-port – DNS-имя и порт хоста, на котором принимает запросы сервер приложений.
Mod_proxy и ApacheTomcat ⅚/7
Для интеграции с ApacheTomcat ⅚/7 в качестве порта AS-port нужно использовать значение 8080. Например,
<Location />
<IfModule mod_proxy.c>
ProxyPass http://localhost:8080/
ProxyPassReverse http://localhost:8080/
</IfModule>
</Location>
Mod_proxy и IBM Websphere 6.1/7.0
Для интеграции с IBM Websphere 6.1/7.0 в качестве порта AS-port нужно использовать значение 9080. Например,
<Location />
<IfModule mod_proxy.c>
ProxyPass http://localhost:9080/
ProxyPassReverse http://localhost:9080/
</IfModule>
</Location>
Mod_proxy и Oracle Weblogic 10.3.2
Для интеграции с Oracle Weblogic 10.3.2 в качестве порта AS-port нужно использовать значение 7001. Например,
<Location />
<IfModule mod_proxy.c>
ProxyPass http://localhost:7001/
ProxyPassReverse http://localhost:7001/
</IfModule>
</Location>
Apache-Tomcat mod_jk connector
Для построения связки между Apache и Tomcat серверами будем использовать Apache Tomcat Connector.
Из хранилища выкачиваем для Apache 2.2 (например, под Linux) mod_jk1.2.28-httpd-2.2.X.so
. Копируем его под именем mod_jk.so
в APACHE_HOME/modules
.
Конфигурирование сервера Apache
Проверяем, что в файле APACHE_HOME/conf/httpd.conf
задана директива Include conf.d/*.conf
Создаем конфигурационный файл APACHE_HOME/conf.d/mod_jk.conf
со следующим содержимым:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile "conf.d/workers.properties"
# Where to put jk shared memory
JkShmFile "logs/mod_jk.shm"
JkLogFile "logs/mod_jk.log"
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]”
В соответствие директиве JkWorkersFile создаем далее конфигурационный файл APACHE_HOME/conf.d/workers.properties
со следующим содержимым:
Он описывает параметры AJP-соединения: идентификатор соединения с именем хоста, используемое значение порта и тип соединения. В файле APACHE_HOME/conf.d/ssl.conf настраиваем в секции виртуального хоста:
Перезапускаем сервер Apache.
Конфигурирование сервера Tomcat
Согласно содержимому конфигурационного файла APACHE_HOME/conf.d/workers.properties в конфигурационном файле TOMCAT_HOME/conf/server.xml
сервера Tomcat проверяем наличие строк
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" enableLookups="false" redirectPort="8443"
protocol="AJP/1.3" />
Перезапускаем сервер Tomcat и заходим на ресурсы сервера TOMCAT по защищенному каналу на порту 443.
Oracle WebLogic WebServer Plug-Ins
Oracle WebLogic WebServer Plug-Ins входит в поставку Oracle WebLogic 10.3.2. После установки Oracle WebLogic 1. Взять из каталога WL_HOME/server/plugin модуль mod_wl_22.so (или mod_wl128_22.so) из подкаталога, соответствующего платформе, на которой установлен web-сервер Apache (например linux/i686). 2. Скопировать его в APACHE_HOME/modules. 3. В конфигурационный файл APACHE httpd.conf прописать загрузку этого модуля: LoadModule weblogic_module modules/mod_wl_22.so 4. Установить проксирование на базе путей (можно указать в секции
<Virtualhost _default_:4433>):
<Location />
SetHandler weblogic-handler
WLLogFile /tmp/wl_root_log.log
</Location>
<IfModule mod_weblogic.c>
WebLogicHost localhost
WebLogicPort 7001
Debug OFF
WLLogFile /tmp/wl_global_proxy.log
#WLTempDir "/tmp/wl"
DebugConfigInfo On
KeepAliveEnabled ON
KeepAliveSecs 15
</IfModule>
IBM WebSphere 7.0 WebServer Plug-Ins
Далее описывается поцесс настройки Apache 2.2 WebServer Plug-Ins для WebSphere 7.0. Установка плагина производится штатным образом согласно документации с дополнительного установочного диска.
После установки плагина нужно проверить в файле httpd.conf наличие следующих строк для Linux или Solaris х32 LoadModule was_ap22_module /opt/IBM/WebSphere/Plugins/bin/mod_was_ap22_http.so WebSpherePluginConfig /opt/IBM/WebSphere/Plugins/config/webserver_ap22/plugin-cfg.xml
айл plugin-cfg.xml генерируется в процессе установки или через консоль управления сервером (https://servername:9043/ibm/console/logon.jsp) после внесения различных изменений в конфигурацию сервера приложений. По умолчанию в результате этой настройки по портам 80 (для http) и 443 (для https) запросы будут транслироваться от Apache-сервера на сервер приложений.
Для конфигурирования https-протокола на нестандартный порт, например, 4433 требуется проделать следующие действия, которые описаны для варианта размещения сервера приложений и apache-сервера на одном хосте.
-
Зарегистрироваться в консоли управления сервером.
-
В пункте «Среда» выбрать «Виртуальные хосты».
-
В списке виртуальных хостов выбрать, например, «default_host».
-
В «Дополнительных свойствах» выбрать «Псевдонимы хоста».
-
Выбрав пункт «Создать», в поле «Имя хоста» внести DNS-имя хоста, в поле «Порт» указать значение 4433 и нажать «Ок».
-
Далее требуется сохранить конфигурацию.
-
После определения виртуального хоста требуется в пункте «Среда» выбрать «Обновить глобальную конфигурацию модуля Webсервера» и затем нажать кнопку «Ок».
-
Далее в пункте «Среда» выбрать «Серверы» - «Типы серверов» - «Web-серверы».
-
В поле «Выбрать» напротив требуемого сервера выставить галочку.
-
Последовательно выбрать пункты «Сгенерировать модуль» и «Распространить модуль».
Перезапустить сервер приложений. В конфигурационном файле ssl.conf apache-сервера нужно проверить наличие строк
Перезапустить apache-сервер. После проделанных действий будут доступны развернутые приложения на виртуальном сервере default_host по защищенному каналу на порту 4433.