Ssl
使用 mod_cluster 保護 SSL 請求?
如果我在安全 LAN 中同時擁有 httpd 和 JBoss,是否可以在 httpd 處終止 SSL 請求,並通過 mod_cluster 將請求傳遞給可用的 JBoss?
知道涉及什麼配置嗎?
預設情況下,mod_cluster 將終止您的 SSL 連接並將未加密的資訊傳遞給後端。有關說明,請參閱http://docs.jboss.org/mod_cluster/1.0.0/html/UsingSSL.html。
請注意第 12.2 節,它顯示了在代理和後端服務之間使用 SSL 所需的額外配置。第 12.3 節展示瞭如果您的應用程序有理由關心它,如何轉發有關已終止 SSL 會話的資訊。
你可以
- 僅保護從客戶端到平衡器的連接,並將平衡器-工作人員網路視為受信任的:
客戶端<–SSL–>平衡器<–AJP/HTTP–>workers 2. 或者您可以保護整個路徑(注意:根據定義,Balancer 實際上是 ManInTheMiddle 攻擊 :-),因此您必須隱含地信任您的平衡器在工作人員身上……)
客戶端<–SSL–>平衡器<–SSL–>工人
- 選項具有嚴重的性能缺陷。我將向您展示如何做到這兩點:
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 消息發佈到平衡器。其他 Balancer -> 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)
- 注意 verify-client=“false”,您無法驗證客戶端,因為請求來自平衡器…
- 注意性能下降。
- 注意一個討厭的錯誤https://issues.jboss.org/browse/JBPAPP-9493(可能也會影響目前的 Mod_cluster)
高溫高壓
乾杯