Tomcatのserver.xmlに記載するredirectPort(リダイレクトポート)とは何の設定か
掲載日:2021年1月2日
INFOMARTION > Tomcatのserver.xmlに記載するredirectPort(リダイレクトポート)とは何の設定か
概要
Tomcatのserver.xmlの設定でポートの設定を見たときに「redirectPort」という設定があったが、ググってもこの設定が何の設定か分からなかったので調べて見ました。
以下の設定です。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
目次
1. redirectPort(リダイレクトポート)とは
結論から言うとSSLが必須であることを指定するページにアクセスする時にリダイレクトしてくれる設定の様です。
仮にserver.xmlの設定値が以下だった場合
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
URL「http://hoge:8080/hoge.html」にアクセスした場合、「https://hoge:8443/hoge.html」でアクセスするようにリダイレクトさせるようです。
SSLが必須であることは「web.xml」で定義が必要です。「<transport-guarantee>CONFIDENTIAL</transport-guarantee>」を設定するとSSLが必須となります。web.xmlに以下の様な情報を記載します。
~省略~
<security-constraint>
<web-resource-collection>
<web-resource-name>twx-portal</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
url-patternが「/」なのでこの設定により、全URLがSSL必須となり、リダイレクトされます。SSLが必須であることを指定しない場合は使われない設定値となります。Tomcatのデフォルト値で「redirectPort="8443"」は設定されていますが、8443ポート自体を起動する設定がTomcatのデフォルト値だと無効となっている様なので、意識せずに「redirectPort="8443"」は設定されているがリダイレクト先の8443ポートが起動していない人も多いのではないかと思います。
1-1. 根拠
上記結論の根拠について記載したいと思います。Tomcatのページに以下の様に記載されています。
http://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html
「If you change the port number here, you should also change the value specified for the redirectPort attribute on the non-SSL connector. This allows Tomcat to automatically redirect users who attempt to access a page with a security constraint specifying that SSL is required, as required by the Servlet Specification.」
直訳すると「ここでポート番号を変更した場合、非SSLコネクタ上のredirectPort属性に指定した値も変更する必要があります。これにより、サーブレット仕様で要求されているように、SSLが必要であることを指定したセキュリティ制約のあるページにアクセスしようとしたユーザーを、Tomcatが自動的にリダイレクトすることができます。」
ポイントは「サーブレット仕様で要求されているように、SSLが必要であることを指定したセキュリティ制約のあるページにアクセス」です。こちらが先ほど設定したweb.xmlの設定となります。要はSSLの必須はサーブレットの仕様で、それが適用されている時にリダイレクトされる様です。
ちなみにウィキペディアでも言及されている様に8443ポートはTomcatのSSL用のポートです。
https://ja.wikipedia.org/wiki/TCPやUDPにおけるポート番号の一覧
↓ウィキペディアのウェルノウンポート番号に書いてあります。
8443 TCP SW Soft Plesk Control Panel, Apache Tomcat SSL, Promise WebPAM SSL, McAfee ePolicy Orchestrator (ePO)
2. まとめ
Tomcatのserver.xmlに記載するredirectPort(リダイレクトポート)の設定について記載いたしました。redirectPortを設定する際に参考にしてみてください。
最後までご覧いただきありがとうございました。