Apacheの背後にあるTomcatの:のj_security_checkでのSSLの使用
-
12-09-2019 - |
質問
私は、Apacheの背後にあるTomcatでSSLを使用して少し問題を抱えています。私は良い解決策が、今のところ何を見つけようとするすべての朝グーグルを使用しています。
私は私のSSLのVirtualHostの設定の一部として、
<Location /MyApp/>
ProxyPass http://localhost:8080/MyApp/
</Location>
これは https://mysite.com/MyApp <からログイン成功後、ほとんどの場合にうまく動作しますが、のj_security_check / A>、HTTPページ http://mysite.com/MyApp/secret.htmlにリダイレクトA>ではなくHTTPSページとしてそれを残しての https://mysite.com/MyApp/secret.html >。それだけでなく、機密のログインが、送信されているデータですので、私はそれHTTPSを維持する必要があります。私は、アプリケーションのセキュリティ-contraintsに追加すると、
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
私は何にProxyPassReverseを持っていない実現するが、それは私がApacheの設定ファイルのセクション内に追加できるものではありません。
どのように私は相対的なリダイレクトのいずれかにj_security_checkで強制することができます(そうでhttp HTTPSを変更しない)、または443の代わりに、8443にリダイレクトするために?これは私がTomcatやApacheのmod_proxyを経て施行すべきものですか?
乾杯
ニク
解決
あなたは本当にあなたのセットアップのためにSSLにリダイレクトを行うにはTomcat上でカウントすることはできません。あなたは自分をリダイレクト行うためにフィルタを記述する必要があります。
あなたはこのようにredirectPortを追加する場合は、あなたの特定のセットアップのために、それがうまくいくかもしれない、
<Connector ... port="8080" redirectPort="443"/>
HTTPSコネクタを削除してください。あなたがにredirectPortとHTTPSコネクタの両方を持っているときには、Tomcatのいくつかのバージョンを混乱させる可能性があります。あなたは、人々が、とにかく自分のHTTPSポートにアクセスすることを望んでいないように聞こえるます。
あなたが同じマシン上のApacheとTomcatを持っている場合、これはのみ動作します。本番環境では、そうではないかもしれません。