5月 21st, 2009

Tomcatぜ SSL/non-SSL通信時のリダイレクト

Posted in Tomcat by admin

 「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

You can leave a comment, or trackback from your own site. RSS 2.0

Leave a comment