Если у меня есть и httpd, и JBoss в защищенной локальной сети, можно ли завершить запросы SSL на httpd и передать запрос доступному JBoss через mod_cluster?
Есть идеи, какая конфигурация задействована?
вы также можете
защитите только соединение клиентов с вашим балансировщиком и сделайте сеть балансировщиков надежной:
клиент <--SSL--> балансировщик <- AJP / HTTP -> воркеры
или вы можете защитить весь путь (примечание: Balancer на самом деле является атакой ManInTheMiddle по определению :-), поэтому вам придется неявно доверять своему балансировщику на рабочих ...)
клиент <--SSL--> балансировщик <--SSL--> воркеры
Вариант 2) имеет серьезные недостатки в производительности. Я покажу вам, как это сделать:
1) httpd:
<IfModule manager_module>
Listen 8888
ManagerBalancerName qacluster
<VirtualHost localhost:8888>
ServerName localhost:8888
<Directory />
Order deny,allow
Deny from all
Allow from all
</Directory>
ServerAdvertise on
EnableMCPMReceive
AdvertiseGroup 224.0.1.105:6666
<Location /mcm>
SetHandler mod_cluster-manager
Order deny,allow
Deny from all
Allow from all
</Location>
SSLEngine on
SSLCipherSuite AES128-SHA:ALL:!ADH:!LOW:!MD5:!SSLV2:!NULL
SSLVerifyDepth 10
SSLCertificateKeyFile /home/karm/Server/server.key
SSLCertificateFile /home/karm/Server/server.crt
SSLCACertificateFile /home/karm/Server/myca.crt
LogLevel debug
</VirtualHost>
</IfModule>
AS7:
<subsystem xmlns="urn:jboss:domain:modcluster:1.1">
<mod-cluster-config advertise-socket="modcluster" advertise="true" sticky-session="true" sticky-session-remove="false" sticky-session-force="false" connector="ajp">
<dynamic-load-provider history="10" decay="2">
<load-metric type="busyness"/>
</dynamic-load-provider>
<ssl key-alias="javaclient" password="tomcat" certificate-key-file="/home/karm/Client/client-cert-key.jks" cipher-suite="AES128-SHA:ALL:!ADH:!LOW:!MD5:!SSLV2:!NULL" ca-certificate-file="/home/karm/Client/ca-cert.jks"/>
</mod-cluster-config>
</subsystem>
Теперь AS7 использует HTTPS только для отправки сообщений Mod_cluster в балансировщик. Другой балансировщик -> Связь AS7 (например, запросы клиента) не зашифрована, поскольку использует AJP.
2) httpd:
+++
SSLEngine on
+SSLProxyEngine On
+++
AS7:
+++
-<connector name="ajp" protocol="AJP/1.3" scheme="ajp" socket-binding="ajp"/>
+<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
+ <ssl name="https" key-alias="javaclient" password="tomcat" certificate-key-file="/home/karm/Client/client-cert-key.jks" cipher-suite="AES128-SHA:ALL:!ADH:!LOW:!MD5:!SSLV2:!NULL" protocol="TLS" verify-client="false" certificate-file="/home/karm/Client/client-cert-key.jks" ca-certificate-file="/home/karm/Client/ca-cert.jks"/>
+</connector>
+++
-<mod-cluster-config advertise-socket="modcluster" advertise="true" sticky-session="true" sticky-session-remove="false" sticky-session-force="false" connector="ajp">
+<mod-cluster-config advertise-socket="modcluster" advertise="true" sticky-session="true" sticky-session-remove="false" sticky-session-force="false" connector="https">
+++
Относительно 2)
HTH
Ура
По умолчанию mod_cluster разорвет ваше SSL-соединение и передаст информацию на бэкэнд в незашифрованном виде. Видеть http://docs.jboss.org/mod_cluster/1.0.0/html/UsingSSL.html для инструкций.
Обратите внимание на раздел 12.2, в котором показана дополнительная конфигурация, необходимая для использования SSL между прокси и серверной службой. В разделе 12.3 показано, как пересылать информацию о прерванном сеансе SSL, если у вашего приложения есть причины для этого.