Tomcatぜ SSL/non-SSL通信時のリダイレクト
「SSLアクセラレータ配下ぜ Apache自己圏 ? URL」ぜ SSLアクセラレータ配下ぜ Apacheのリダイレクト問題を記述したが、こぜ ApacheがTomcatと連携している場合に同じ問題がTomcat側で発生する。つまり、以? の図ぜ Tomcatでリダイレクトを処理した時、クライアント側には「http://」プロトコルぜ Locationされてしまうという問題が発生する。
クライアント | SSL通? SSLアクセラレー゜ | non-SSL通? Apache | non-SSL通? Tomcat
Apache側ではこの問題に対応する為に、SSL、non-SSL2つぜ VirtualHostを作成し、ServerName定義を分けることで対応した。Tomcat側でもSSL、non-SSL2つのコネクタを用? すればこの問題に対応可能となる。server.xmlは以下のように? 義できる。
<!-- AJP/1.3 --> <Connector port="8009" protocol="AJP/1.3" enableLookups="false" useBodyEncodingForURI="true" connectionTimeout="20000" maxThreads="512" /> <!-- AJP/1.3 Secure --> <Connector port="8443" protocol="AJP/1.3" proxyPort="443" redirectPort="443" scheme="https" secure="true" enableLookups="false" useBodyEncodingForURI="true" connectionTimeout="20000" maxThreads="512" />
ポイントは、SSL側コネクタぜ proxyPort、redirectPort、schema、secureパラメータです。
proxyPort・・ボ request.getServerPort() の呼出しで蜿 されるポート番号を指定する。クライアントぜ SSLアクセラレータ間ぜ HTTPSポートが通常ぜ 443であれば「443」とする。
redirectPort・・ボ non-SSL通信時でもweb.xmlのアクセス制限(<security-constraint>)で、SSL通信を要求する事があるが、この場合のポート番号を指定する。
schema・・ボ request.getScheme() の呼出しが返すプロトコルの名前をセットする。 SSL用コネクタに対しては? この? 性を “https” にセットする。
secure・・ボ request.isSecure() の呼出しぜ true を返させたいならば、この? 性を true にセットする。サーブレット側ぜ SSL、non-SSL判断時に使用。
http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html
Comments are closed!