Apache Tomcat (かつての Jakarta Tomcat) についてのメモ。

Apache Tomcat (かつての Jakarta Tomcat) についてのメモ。

Tomcatのバージョンと対応するサーブレット/JSPのバージョン


,Tomcat,Servlet,JSP,J2EE,必要なJ2SE
,9,4.0,2.4?,Java EE 8,8
,8,3.1,2.3,Java EE 7,7
,7,3.0,2.2,Java EE 6,6
,6,2.5,2.1,Java EE 5,5
,5.5.x,2.4,2.0,J2EE 1.4,5 (JDK 1.4 Compatability Package 使用時は 1.4)
,5.0.x,2.4,2.0,J2EE 1.4,1.3以降
,4.x.x,2.3,1.2,J2EE 1.3,1.2以降 (CGI Servlet 使用時は 1.3以降)
,3.x.x,2.2,1.1,J2EE 1.2,

-Apache Tomcat - Which Version Do I Want?
--https://tomcat.apache.org/whichversion.html

-Java Platform, Enterprise Edition (Java EE) | Oracle Technology Network | Oracle
--http://www.oracle.com/technetwork/java/javaee/overview/index.html

メモ


-Java Servlet - Wikipedia
--https://ja.wikipedia.org/wiki/Java_Servlet

-IT技術メモ - Tomcat4について
--http://www.nilab.info/resource/bbslog/megabbs/1024219376.html

-Tomcat Island
--http://www.limy.org/program/tomcat/
---server.xml や web.xml のわかりやすいリファレンス。

-株式会社アドバンスソフト - PukiWiki : JavaEE
--http://www.advancesoft.co.jp/wiki/?JavaEE

-IW2004 Tomcat5.5 最近のTomcatってどうよ?
--ttp://www.jajakarta.org/dist/etc/iw2004/tomcat55.pdf

-デプロイ方法は2つ
--webappsにコピー
--設定ファイルに記述
---コンテキストファイル(server.xmlでも良いけど)

-URLパラメータのエンコード
--setCharacterEncoding の挙動が Tomcat4.1までと違う。
--useBodyEncodingForURI

-ApacheとTomcatの接続数と接続時間の設定
--Apache の httpd.conf で Timeout 300 を適切に設定
--/etc/tomcat5.5/server.xml の connectionTimeout を長く設定する(Debian)
--<!-- Define a non-SSL HTTP/1.1 Connector on port 8180 -->
---<Connector port="8180" maxHttpHeaderSize="8192"
---maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
---enableLookups="false" redirectPort="8443" acceptCount="100"
---connectionTimeout="20000" disableUploadTimeout="true" />

Tomcat4 on Debian Sarge


-Debian GNU/Linux Sarge に Java をインストールする
--http://www.nilab.info/zurazure2/archives/000291.html

-Debian GNU/Linux Sarge に Tomcat 4.1 をインストールする
--http://www.nilab.info/zurazure2/archives/000292.html

-Debian Sarge に Tomcat4 をインストール

# apt-get install tomcat4
Adding system user `tomcat4'...
Adding new user `tomcat4' (101) with group `nogroup'.
Not creating home directory.
Installing /var/lib/tomcat4/webapps/ROOT/WEB-INF/web.xml.
Installing /var/lib/tomcat4/conf/tomcat-users.xml.
Installing /var/lib/tomcat4/conf/jk2.properties
Starting Tomcat 4.1 servlet engine using Java from /usr/lib/j2sdk1.4-sun: tomcat4.

# apt-get install tomcat4-webapps

-ログファイルの場所
--/var/lib/tomcat4/logs 以下

-ポリシファイル

Debian Sarge の tomcat4 は、/etc/tomcat4/policy.d/ 以下にセキュリティ関係の設定ファイルがある。

/etc/tomcat4/policy.d/01system.policy
/etc/tomcat4/policy.d/02debian.policy
/etc/tomcat4/policy.d/03catalina.policy
/etc/tomcat4/policy.d/04webapps.policy
/etc/tomcat4/policy.d/99examples.policy
/var/lib/tomcat/conf/catalina.policy

-Java 入門 | ポリシファイル
--http://msugai.fc2web.com/java/security/policy.html

-Java(TM) 2 SDK におけるアクセス権
--http://java.sun.com/j2se/1.4/ja/docs/ja/guide/security/permissions.html

-TomcatにおけるJava SecurityManagerの使用方法
--http://www.ingrid.org/jajakarta/tomcat/tomcat-3.2.1/doc-ja/uguide/tomcat-security.html

-JFreeChartで生成したグラフを一時ファイルに保存してServletで出してみる(JFreechart 0.9.16)
--http://www.h7.dion.ne.jp/~matsu/feature/jfreechart/advanced/tmp_file_servlet.html

-個人環境のTomcat - klove
--http://cgi39.plala.or.jp/klove/w/k.cgi?page=%B8%C4%BF%CD%B4%C4%B6%AD%A4%CETomcat

-暮らしの業(2003-10-22) - [Java] Tomcat セキュリティマネージャ
--http://ko.meadowy.net/~koichiro/diary/20031022.html#p03

// 手抜き AllPermission の例
grant codeBase "file:${catalina.home}/webapps/hoge/-" {
permission java.security.AllPermission;
};

// 例: The permission granted to your JDBC driver
grant codeBase "file:${catalina.home}/webapps/hoge/-" {
permission java.net.SocketPermission "192.168.0.1:3306", "connect";
};

Apache - Tomcat 連携


-The Apache Tomcat Connector - Documentation Index
--http://tomcat.apache.org/connectors-doc/index.html

-The Apache Jakarta Tomcat Connector - Documentation Index
--http://tomcat.apache.org/tomcat-4.1-doc/jk2/index.html

-mod_jkでTomcatにリクエストを転送しないパスを指定する方法
--http://kvasir.skirnir.net/software/java/java00023.ksd


Tomcat 4.1.31 以前にはセキュリティホールがある(AJP 1.3 Connector で Apache Web Server と連携させている場合)


-アプリケーション・サーバー「Tomcat 4.x」にセキュリティ・ホール:ITpro
--http://itpro.nikkeibp.co.jp/article/NEWS/20050930/221999/
--->JP Vendor Status Notes(JVN)は9月30日,Javaアプリケーション(Java ServletやJSP)の実行環境であるオープンソースのアプリケーション・サーバー「Apache Tomcat 4.x」にセキュリティ・ホールが見つかったことを明らかにした。細工が施されたリクエストを送信されると,ユーザーのなりすましなどを許す可能性がある。対策はTomcat 5.xにアップグレードすること。
--->Tomcatは単独でもWebサーバーとして利用できるが,他のWebサーバーと連携させることもできる。特に,Apache Web Serverと連携させる場合が多い。連携には,AJP(Apache JServ Protocl)と呼ばれるプロトコルを利用する。TomcatはWebサーバーからAJP 1.3のリクエストを受け取り,そのリクエスト情報に基づいてServletを呼び出す。Tomcat 4.xには,このリクエスト処理に不具合が存在する。リクエストに細工を施すと,悪意のあるユーザーからのリクエストを,別の正規ユーザーからのリクエストに見せかけることができる。つまり,ユーザーのなりすましが可能となる。詳細については,情報処理推進機構(IPA)がWebサイトで公開している。

-JP Vendor Status Notes - JVN#79314822 Tomcat におけるリクエスト処理に関する脆弱性
--http://jvn.jp/jp/JVN%2379314822/
--->影響を受けるシステム
--->Apache Tomcat 4.1.31 およびそれ以前 で AJP 1.3 Connector (org.apache.ajp.tomcat4.Ajp13Connector) を用いて Web サーバと連携させている場合
--->The Apache Software Foundation は AJP 1.3 Connector を現状サポートしておらず、代わりに Coyote JK Connector を使用することを推奨しています。また、Tocamt 4.x から 5.x へのアップグレードについても推奨しています。

-情報処理推進機構:セキュリティセンター:脆弱性関連情報取扱い:脆弱性関連情報の調査結果
--http://www.ipa.go.jp/security/vuln/documents/2005/JVN_79314822_Tomcat.html

Sun のドキュメント


-Sun Developer Connection - J2EE & Webサービス
--http://sdc.sun.co.jp/java/j2ee/index.html

-J2EE v1.4 Documentation
--http://java.sun.com/j2ee/1.4/docs/
--->Specifications
--->* J2EE Platform Specification 1.4
--->* J2EE Connector Specification 1.5
--->* J2EE Deployment API Specification 1.1
--->* J2EE Management Specification 1.0
--->* Enterprise JavaBeans Specification 2.1
--->* Enterprise JavaBeans to CORBA Mapping 1.1
--->* Java API for XML Processing Specification 1.2
--->* Java API for XML Registries Specification 1.0
--->* Java API for XML-based RPC Specification 1.1
--->* Java Authorization Contract for Containers 1.0
--->* Java IDL API
--->* Java Naming and Directory Interface Specification 1.2.1
--->* Java Message Service Specification 1.1
--->* Java Servlet Specification 2.4
--->* Java Transaction API Specification 1.0.1B
--->* Java Transaction Service Specification 1.0
--->* JDBC Specifications, 3.0, 2.1, and Optional Package API (2.0)
--->* JavaBeans Activation Framework Specification 1.0.2
--->* JavaMail API Specification 1.3
--->* JavaServer Pages Specification 2.0
--->* RMI over IIOP
--->* SOAP with Attachments API for Java Specification 1.2

-J2EE v1.3 Documentation
--http://java.sun.com/j2ee/1.3/docs/
--->Specifications
--->- Java 2 Platform, Enterprise Edition Specification 1.3
--->- J2EE Connector Specification 1.0
--->- Enterprise JavaBeans Specification 2.0
--->- Enterprise JavaBeans to CORBA Mapping 1.1
--->- JavaServer Pages Specification 1.2
--->- Java Servlet Specification 2.3
--->- Java Naming and Directory Interface Specification 1.2.1
--->- Java Message Service Specification 1.0.2b
--->- JDBC Specifications, 3.0, 2.1, and Optional Package API (2.0)
--->- JavaMail API Specification 1.2
--->- JavaBeans Activation Framework Specification 1.0.1
--->- Java Transaction API Specification 1.0.1B
--->- Java Transaction Service Specification 1.0
--->- RMI over IIOP
--->- Java IDL API

-J2EE 1.2 Documentation
--http://java.sun.com/j2ee/1.2/docs/
--->Specifications
--->- Java 2 Platform, Enterprise Edition Specification 1.2
--->- J2EE Connector Specification 1.0
--->- Enterprise JavaBeans Specification 1.1
--->- Enterprise JavaBeans to CORBA Mapping 1.1
--->- JavaServer Pages Specification 1.1
--->- Java Servlet Specifications 2.2
--->- Java Naming and Directory Interface Specification, 1.2.1
--->- JDBC Specifications, 3.0, 2.1, and Optional Package API (2.0)
--->- JavaMail API Specification 1.1
--->- JavaBeans Activation Framework Specification 1.0.1
--->- Java Transaction API Specification 1.0.1
--->- Java Transaction Service Specification 1.1
--->- RMI over IIOP
--->- Java IDL API

-Java EE 5 Documentation
--http://java.sun.com/javaee/5/docs/

-Java Platform, Enterprise Edition (Java EE) 5 Technologies
--http://java.sun.com/javaee/5/javatech.html
--->Java Servlet 2.5 JSR 154
--->JavaServer Faces 1.2 JSR 252
--->JavaServer Pages 2.1 JSR 245