ITエンジニアの成長ブログ

ITエンジニアとして行う勉強の発信&日々の生活で体験した楽しいことをゆるく発信

Tomcatのデフォルトのエラーページを編集する

Tomcatのデフォルトのエラーページを編集する方法について、簡単に紹介したいと思います。
今回は、Windows10のPCにインストールしたTomcat 8.5で確認しています。

Tomcatのデフォルトのエラーページをみてみる

デフォルトで404エラーが発生したエラーページを見てみましょう。以下のような画面が表示されました。

デフォルトのエラーページ

HTTPステータスが404であること、そのエラーとなった理由の他に、なんとサーバーのバージョン情報まで表示されてしまっています。

開発環境では色々と情報が出力されていて、とても便利なのですが商用環境でサーバーのバージョン情報が表示されてしまっている状況はセキュリティ上良くありません。
バージョン固有の脆弱性で攻撃されてしまったりしてしまうので、バージョン情報はまずは表示しないのがベストかと思います。

ちなみに、このTomcatのデフォルトのエラーページはWebアプリケーション側でエラーページを定義していないときに表示されます。表示される条件としては、HTTPステータスが400以上のときまたは、Webアプリケーションで例外が発生したときみたいです。

Tomcatのデフォルトのエラーページからサーバーバージョンを表示しないようにする

上記のデフォルトの状態から、サーバーのバージョン情報をまずは表示しないようにしたいと思います。

Tomcatのサーバー設定ファイルであるserver.xmlのHostタグの中に、以下のValveタグを追加します。
${Tomcatインストールディレクトリ}/conf/server.xml

<Valve className="org.apache.catalina.valves.ErrorReportValve" showServerInfo="false" />


修正後、設定変更の反映をするためにTomcatを再起動します。再度、エラーページをみてみましょう。
いかがでしょうか。ページの下部に表示されていたサーバー情報が消えています!これでひとまず安心です。

デフォルトのエラーページ(サーバー情報非表示)

Tomcatのデフォルトのエラーページからエラー情報を表示しないようにする

さて、とりあえずサーバー情報まで削除できました。実は、エラー情報も表示できないようにできます。

さきほど追加したValveタグにshowReport属性を追加します。以下のように修正しました。
${Tomcatインストールディレクトリ}/conf/server.xml

<Valve className="org.apache.catalina.valves.ErrorReportValve" showServerInfo="false" showReport="false" />


修正後、設定変更の反映をするためにTomcatを再起動します。再度、エラーページをみてみましょう。
いかがでしょうか。サーバー情報に加えてエラー情報も表示されなくなりました。もはや、HTTPステータスコードくらいですね。

デフォルトのエラーページ(サーバー情報&エラー情報非表示)

おわりに

いかがでしたでしょうか。デフォルトのエラーページを簡単に編集できました。実際にはWebアプリケーション側で、エラーページを定義することがほとんどだと思いますがこのようなことができることを知っておくといつか役に立つかもしれません。

今回も最後までお読みいただきありがとうございました。この辺で失礼いたします。