Ssl

使用 mod_cluster 保護 SSL 請求?

  • November 14, 2012

如果我在安全 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 會話的資訊。

你可以

  1. 僅保護從客戶端到平衡器的連接,並將平衡器-工作人員網路視為受信任的:

客戶端<–SSL–>平衡器<–AJP/HTTP–>workers 2. 或者您可以保護整個路徑(注意:根據定義,Balancer 實際上是 ManInTheMiddle 攻擊 :-),因此您必須隱含地信任您的平衡器在工作人員身上……)

客戶端<–SSL–>平衡器<–SSL–>工人

  1. 選項具有嚴重的性能缺陷。我將向您展示如何做到這兩點:

1) httpd:

&lt;IfModule manager_module&gt;
 Listen 8888
 ManagerBalancerName qacluster
 &lt;VirtualHost localhost:8888&gt;
 ServerName localhost:8888
   &lt;Directory /&gt;
     Order deny,allow
     Deny from all
     Allow from all
   &lt;/Directory&gt;

   ServerAdvertise on
   EnableMCPMReceive
   AdvertiseGroup 224.0.1.105:6666

   &lt;Location /mcm&gt;
     SetHandler mod_cluster-manager
     Order deny,allow
     Deny from all
     Allow from all
  &lt;/Location&gt;

  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

 &lt;/VirtualHost&gt;
&lt;/IfModule&gt;

AS7:

&lt;subsystem xmlns="urn:jboss:domain:modcluster:1.1"&gt;
   &lt;mod-cluster-config advertise-socket="modcluster" advertise="true" sticky-session="true" sticky-session-remove="false" sticky-session-force="false" connector="ajp"&gt;
       &lt;dynamic-load-provider history="10" decay="2"&gt;
           &lt;load-metric type="busyness"/&gt;
       &lt;/dynamic-load-provider&gt;
       &lt;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"/&gt;
   &lt;/mod-cluster-config&gt;
&lt;/subsystem&gt;

現在 AS7 僅使用 HTTPS 將 Mod_cluster 消息發佈到平衡器。其他 Balancer -> AS7 通信(如客戶端的請求)未加密,因為它使用 AJP。

2) httpd:

+++
SSLEngine on   
+SSLProxyEngine On
+++

AS7:

+++
-&lt;connector name="ajp" protocol="AJP/1.3" scheme="ajp" socket-binding="ajp"/&gt;
+&lt;connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true"&gt;
+    &lt;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"/&gt;
+&lt;/connector&gt;
+++
-&lt;mod-cluster-config advertise-socket="modcluster" advertise="true" sticky-session="true" sticky-session-remove="false" sticky-session-force="false" connector="ajp"&gt;
+&lt;mod-cluster-config advertise-socket="modcluster" advertise="true" sticky-session="true" sticky-session-remove="false" sticky-session-force="false" connector="https"&gt;
+++

關於2)

  • 注意 verify-client=“false”,您無法驗證客戶端,因為請求來自平衡器…
  • 注意性能下降。
  • 注意一個討厭的錯誤https://issues.jboss.org/browse/JBPAPP-9493(可能也會影響目前的 Mod_cluster)

高溫高壓

乾杯

引用自:https://serverfault.com/questions/429604