😸

tomcatにwarファイルを配置する

2023/10/28に公開

概要

CI/CDの勉強で知識が必要になったので勉強します。

結論(流れ)

eclipseでプロジェクト作成
プロジェクトをエクスポート(war)
tomcatに配置

eclipseでプロジェクト作成

下記の条件で動的プロジェクト作成
プロジェクト名:test
ターゲットランタイム:Tomcat8(Java8) ※今回利用するxamppが8のため

クラスを作成

src/main/java/test
package test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Test01
 */
@WebServlet("/")
public class Test01 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.getWriter().write("ABCD");
	}

}

プロジェクトをエクスポート(war)

プロジェクトをwarファイルでエクスポート

tomcatに配置

xampp\tomcat\webapps配下
Tomcatを再起動すると配置される
http://localhost:8080/test/
へアクセス

起動することを確認

xamppで起動したアパッチサーバーへリクエストすると下記のようにserverによってバージョン情報が出力されます。

curl -I -s localhost
HTTP/1.1 302 Found
Date: Tue, 17 Oct 2023 19:16:02 GMT
Server: Apache/2.4.56 (Win64) OpenSSL/1.1.1t PHP/8.2.4
X-Powered-By: PHP/8.2.4
Location: http://localhost/dashboard/
Content-Type: text/html; charset=UTF-8

なぜ表示しないように制限するのか

server・・・脆弱性のあるサーバーのバージョンを利用している場合、攻撃を受けてしまうため

serverについて

apacheの設定に下記を記載します。

apache\conf
ServerTokens Prod

再起動して確認

curl -I -s localhost
HTTP/1.1 302 Found
Date: Wed, 18 Oct 2023 08:05:24 GMT
Server: Apache
X-Powered-By: PHP/8.2.4
Location: http://localhost/dashboard/
Content-Type: text/html; charset=UTF-8

おまけ

apacheでサーバーフィールドを設定した場合と、java側でフィールドを設定した場合、どちらが優先されるのか?
プロジェクトを作って確認してみます。

res.setHeader("Server", "Apache/2.4.56 (Win64) OpenSSL/1.1.1t PHP/8.2.4");

Discussion