web-dev-qa-db-ja.com

mod_clusterでSSLリクエストを保護しますか?

安全なLANにhttpdとJBossの両方がある場合、httpdでSSLリクエストを終了し、mod_clusterを介して利用可能なJBossにリクエストを渡すことは可能ですか?

どのような構成が関係しているのか分かりますか?

1
SyRenity

デフォルトでは、mod_clusterはSSL接続を終了し、暗号化されていないバックエンドに情報を渡します。手順については、 http://docs.jboss.org/mod_cluster/1.0.0/html/UsingSSL.html を参照してください。

プロキシとバックエンドサービス間でSSLを使用するために必要な追加の構成を示すセクション12.2に注意してください。セクション12.3は、アプリケーションに何らかの理由で気になる場合に終了したSSLセッションに関する情報を転送する方法を示しています。

2
Jeff Ferland

あなたはどちらかができます

  1. クライアントからバランサーへの接続のみを保護し、バランサー-ワーカーネットワークを信頼できるものとして使用します。

    クライアント<-SSL->バランサー<-AJP/HTTP->ワーカー

  2. または、パス全体を保護することもできます(注:バランサーは実際には定義上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は、Mod_clusterメッセージをバランサーに送信するためにのみHTTPSを使用するようになりました。その他のバランサー-> 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-949 (おそらく現在のMod_clusterにも影響します)

HTH

乾杯

4