1

Apache の背後にある Tomcat で SSL を使用する際に少し問題があります。私は午前中ずっと Google を使って良い解決策を見つけようとしましたが、今のところ何もありません。

私のSSL VirtualHost構成の一部として、私は持っています

<Location /MyApp/>
  ProxyPass http://localhost:8080/MyApp/
</Location>

これはほとんどの場合にうまく機能しますが、j_security_check はhttps://mysite.com/MyAppからのログインに成功した後、HTTP ページを HTTPS のままにする代わりにhttp://mysite.com/MyApp/secret.htmlにリダイレクトします。ページhttps://mysite.com/MyApp/secret.html。機密なのはログイン情報だけでなく、送信されるデータなので、HTTPS を維持する必要があります。アプリケーションのセキュリティ制約に追加すると

<user-data-constraint>
  <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>

https://mysite.com:8443/MyApp/secret.htmlにリダイレクトします。server.xml で SSL が 8443 に設定されているため、8443 にリダイレクトされることはわかっていますが、これは Apache 経由でプロキシされるため、実際には 443 である必要があります。

ProxyPassReverse がないことに気付きましたが、それは Apache 構成ファイルのセクション内に追加できるものではありません

j_security_check で相対をリダイレクトする (https を http に変更しない) か、8443 ではなく 443 にリダイレクトするように強制するにはどうすればよいですか? これは、Tomcat または Apache の mod_proxy を介して強制する必要がありますか?

乾杯

ニック

4

1 に答える 1

1

セットアップのために Tomcat が SSL へのリダイレクトを行うことを期待することはできません。リダイレクトを自分で行うには、フィルターを作成する必要があります。

特定のセットアップでは、次のように redirectPort を追加するとうまくいく場合があります。

<Connector ... port="8080" redirectPort="443"/>

HTTPS コネクタを削除してください。redirectPort と HTTPS コネクタの両方がある場合、一部のバージョンの Tomcat が混乱する可能性があります。とにかく、人々があなたの HTTPS ポートにアクセスすることを望まないように思えます。

これは、Apache と Tomcat が同じマシン上にある場合にのみ機能します。実稼働環境では、そうではない場合があります。

于 2009-09-22T14:20:43.653 に答える