9

私はどこでも探していましたが、次の状況の明確な解決策を見つけることができません:

apacheの背後にあるtomcatで実行されているWebアプリケーション(Grails + Spring Security)があります。アプリケーションの一部はhttpsで実行する必要があるため、Spring Security Channel Securityを使用すると、アプリケーションの安全な部分に移動するたびに、Springは302ステータスコードでhttpsにリダイレクトします。

これで、Tomcatはhttpsと証明書について知るように設定されたため、SSLの処理方法を知っています。実際、URLとポートに直接移動してTomcatを直接ヒットすることで、apacheを回避すると、すべてが100%機能します。

問題は、Tomcatの前にapacheを配置するときに発生します。現在使用しているapache構成は、アプリケーションの安全でない部分に対しては正常に機能します。mod_jkを使用してapacheとtomcatをプロキシしています。

ただし、アプリケーションの安全な部分に移動しようとするとすぐに、Springがリダイレクトし、

<VirtualHost _default_:443> ... </VirtualHost>

apache設定の一部...そしてこれが問題の始まりです。

私が読んだことから、apacheはmod_jkを介して、ssl処理をtomcatに渡すことができます。しかし、これを正しく構成することはできないようです。tomcatはすでにsslに設定されており、証明書がどこにあるかを認識しており、Spring Securityが設定されているため、tomcatですべてのsslを処理し、apacheで単にtomcatにポーンオフします。

これは可能ですか、それとも何かが足りませんか?これを設定する方法について誰かが明確な指示を持っていますか?どんな助けでも大歓迎です。

Apache2.2とtomat7.0.27を使用しています

ありがとう

4

2 に答える 2

5

SSL/TLS トラフィックを Apache から Tomcat に中継することはできません。SSL 接続が Apache で終了し、トラフィックを Tomcat にリバース プロキシする必要があります (この場合、SSL はほとんど役に立ちません)。または、クライアントを Tomcat に直接接続させて SSL 接続を処理させます。

mod_jkSSL接続自体をTomcatに渡すことができる場所をどこで読んだかわかりません。ソケットを直接リレーする必要があるため、によって使用される AJP プロトコルをバイパスしますmod_jk(mod_proxy_ajpちなみに、これは新しい方法ですmod_proxy_http)。

とにかくTomcatにSSLリクエストを処理させたいのに、Tomcatの前にApacheを置きたい理由がわかりません。これがポート番号などに関係している場合は、ファイアウォール ルールを使用して、ポート 443 を Tomcat ポートに転送します。

さらに、HTTP から HTTPS へのこれらの自動リダイレクトが行われる方法については注意が必要です。最初の HTTP リクエストが行われた後にのみ発生します

于 2012-04-06T13:19:05.953 に答える
0

あなたの投稿から、ssl を Apache で動作させる際に問題が発生しているのか、それともアプリの特定の部分が http 経由であるため、Apache が ssl 経由でリダイレクトされないのかわかりません。ssl 経由で複数の「セグメント」を使用してもまったく問題ないことに注意してください (つまり、ユーザー -> Apache 経由 ssl および Apache -> tomcat 経由 ssl)。
1. 問題が Apache 上で ssl を動作させることである場合、ssl が Apache 側で正しくセットアップされていることを確認する必要があります。
2. 問題が「リダイレクト」である場合は、http と https の URL を別々にしてみてください。/something.mysite.com/non_ssl/ や /something.mysite.com/ssl/ のように。これにより、Apache でのルールの記述が容易になります。

于 2012-04-06T21:02:16.463 に答える