[NI-Lab.]
Apache Tomcat (かつての Jakarta Tomcat) についてのメモ。
- Tomcatのバージョンと対応するサーブレット/JSPのバージョン
| Tomcat | Servlet | JSP | J2EE | 必要なJ2SE |
| 6.0.x | 2.5 | 2.1 | |
| 5.5.x | 2.4 | 2.0 | 1.4 | 5 (JDK 1.4 Compatability Package 使用時は 1.4) |
| 5.0.x | 2.4 | 2.0 | 1.4 | 1.3以降 |
| 4.x.x | 2.3 | 1.2 | 1.3 | 1.2以降 (CGI Servlet 使用時は 1.3以降) |
| 3.x.x | 2.2 | 1.1 | 1.2 | |
- 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 をインストールする
- Debian GNU/Linux Sarge に Tomcat 4.1 をインストールする
- 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
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
- TomcatにおけるJava SecurityManager?の使用方法
- JFreeChartで生成したグラフを一時ファイルに保存してServletで出してみる(JFreechart 0.9.16)
- 暮らしの業(2003-10-22) - [Java] Tomcat セキュリティマネージャ
// 手抜き 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
- The Apache Jakarta Tomcat Connector - Documentation Index
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 へのアップグレードについても推奨しています。
- 情報処理推進機構:セキュリティセンター:脆弱性関連情報取扱い:脆弱性関連情報の調査結果
Sun のドキュメント。
- Sun Developer Connection - J2EE & Webサービス
- 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 Platform, Enterprise Edition (Java EE) 5 Technologies
- mod_jkでTomcatにリクエストを転送しないパスを指定する方法