!!!Apache Tomcat {{category Java,Apache Tomcat,nolink}}Apacheソフトウェア財団による、Apache Software License の Javaサーブレット・JSP アプリケーションサーバ。 !!!SSL暗号化通信 Tomcat でセキュア通信(SSLの暗号化通信)を行うためには、tomcat の設定ファイル server.xml を編集し、コネクターの設定でセキュア通信を有効にする。 !!Tomcatの設定ファイル インストールした状態では、以下のようにコメントアウトされ例が記述されている。 !!鍵と証明書の作成 必要な鍵と証明書を収めたキーストアは、Java の keytool を使って作成する。キーストアの種類やアルゴリズムは、デフォルト("JKS"と"SunX509")でよい。 主な作成手順としては、鍵ペアを作成し、証明書署名要求(CSR)の作成。CSRを認証局に提出し、証明書を発行してもらう。発行された証明書をインポートする。 !!サーバ証明書の指定 特に指定をしないとデフォルトの設定でキーストアが読まれる。個別に指定する場合は、Connector タグの属性 keystoreFile, keystorePass, keyAlias を指定する。 ::keystoreFile :::キーストアファイルの場所。 :::デフォルトは、実行ユーザのホームディレクトリの ".keystore" となる。 :::絶対パスか、環境変数($CATALINA_BASE)からの相対パスで指定する。 ""Windows版でサービスとして起動している場合は、キーストアファイルは "%SystemDrive%/Documents and Settings/NetworkService/.keystore" を参照する。 ::keystorePass :::キーストアのパスワード。デフォルトは、"changeit" となる。 ::keystoreType :::キーストアの種類。デフォルトは、"JKS" となる。 ::keyAlias :::読み込む鍵のalias名。指定がない場合は、最初の鍵が読み込まれる。 :::''※ 5.5以降から'' !!クライアント認証 Connector タグの属性 clientAuth を "true" にすることでクライアント認証が行われる。 ::clientAuth :::クライアント認証するか(クライアントに証明書を提示させるか)。 ::truststoreFile :::クライアント認証で使用するキーストアの場所。 ::truststorePass :::キーストアのパスワード。 ::truststoreType :::キーストアの種類。 !!サンプル !!!catalina.out のローテート サーブレット等が標準出力・エラーに出力した内容が保存される catalina.out だが、ローテートされず常に追記されているので、出力が多かったり稼働させている時間が長くなると次第に大きなファイルになっていく。 UNIX版の場合、catalina.out は $TOMCAT_HOME/bin/catalina.sh でリダイレクトされているだけなので、rotatelogs を使用してローテートするようにする。$TOMCAT_HOME/logs/catalina.2009-01-27.out の様に日付が付いたファイルが出力される。 {{code Text,4, *** /usr/tomcat/bin/catalina.sh.org 2006-04-15 03:09:44.000000000 +0900 --- /usr/tomcat/bin/catalina.sh 2009-01-27 11:30:37.346765731 +0900 *************** *** 237,243 **** elif [ "$1" = "start" ] ; then shift ! touch "$CATALINA_BASE"/logs/catalina.out if [ "$1" = "-security" ] ; then echo "Using Security Manager" shift --- 237,243 ---- elif [ "$1" = "start" ] ; then shift ! #touch "$CATALINA_BASE"/logs/catalina.out if [ "$1" = "-security" ] ; then echo "Using Security Manager" shift *************** *** 249,255 **** -Dcatalina.home="$CATALINA_HOME" \ -Djava.io.tmpdir="$CATALINA_TMPDIR" \ org.apache.catalina.startup.Bootstrap "$@" start \ ! >> "$CATALINA_BASE"/logs/catalina.out 2>&1 & if [ ! -z "$CATALINA_PID" ]; then echo $! > $CATALINA_PID --- 249,256 ---- -Dcatalina.home="$CATALINA_HOME" \ -Djava.io.tmpdir="$CATALINA_TMPDIR" \ org.apache.catalina.startup.Bootstrap "$@" start \ ! 2>&1 | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out 86400 & ! #>> "$CATALINA_BASE"/logs/catalina.out 2>&1 & if [ ! -z "$CATALINA_PID" ]; then echo $! > $CATALINA_PID *************** *** 261,267 **** -Dcatalina.home="$CATALINA_HOME" \ -Djava.io.tmpdir="$CATALINA_TMPDIR" \ org.apache.catalina.startup.Bootstrap "$@" start \ ! >> "$CATALINA_BASE"/logs/catalina.out 2>&1 & if [ ! -z "$CATALINA_PID" ]; then echo $! > $CATALINA_PID --- 262,269 ---- -Dcatalina.home="$CATALINA_HOME" \ -Djava.io.tmpdir="$CATALINA_TMPDIR" \ org.apache.catalina.startup.Bootstrap "$@" start \ ! 2>&1 | /usr/sbin/rotatelogs "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out 86400 & ! #>> "$CATALINA_BASE"/logs/catalina.out 2>&1 & if [ ! -z "$CATALINA_PID" ]; then echo $! > $CATALINA_PID }} ※Windows版は、catalina.bat でリダイレクトしてる訳じゃないけど、どうしてるんだろう… !!!TomcatでCGIを使う デフォルトでは無効になっているが、Tomcat でもCGIの実行自体はサポートされている。ので、設定を行えばTomcat上でCGIを走らせることが出来る。 !!TomcatでCGIを有効にする 先ずは、CGIを実行する為のライブラリの配置。$TOMCAT_HOME/server/lib 下にある '''servlet-cgi.renametojar''' と言うファイルを '''servlet-cgi.jar''' へ名前を変更する。 続いて、CGIを利用するWebアプリケーションの '''web.xml''' にCGIサーブレットの定義を追加する。 {{code Text,4, CGIServlet org.apache.catalina.servlets.CGIServlet cgiPathPrefix WEB-INF/cgi clientInputTimeout 100 debug 0 executable /usr/bin/perl 5 CGIServlet /cgi-bin/* }} CGIServlet の設定可能なパラメータは以下の通り。デフォルト値で問題なければ特に記述も不要。 ,パラメータ名 ,説明,デフォルト値 ,cgiPathPrefix ,CGIプログラムの置かれる場所。先頭の'/'を除いたアプリケーションのルートからの絶対パス。,「WEB-INF/cgi」 ,clientInputTimeout ,ブラウザからの入力がないと判定するまでの時間(単位はミリ秒)。,100ミリ秒 ,debug ,ログへ出力させるデバッグ情報の表示レベル。,0 ,executable ,スクリプトの実行コマンド。パスが通っていない場合は「/usr/bin/perl」の様に絶対パスで指定する。,「perl」 ,parameterEncoding,, ,passShellEnvironment,,false このCGI利用の記述は、$TOMCAT_HOME/conf/web.xml にもコメントアウトされた形で記述されている。しかし、ここで有効にするとすべてのWebアプリケーションでCGIが有効になってしまうため、個別に web.xml でCGIの設定を行う方が無難かな。 !!CGIプログラムの動作確認 実際にTomcat上でCGIプログラムが動作するかを確認する。 Webアプリケーションの /WEB-INF/cgi 下に '''test.cgi''' を以下の内容で配置する。 {{code Perl,4, #!/usr/bin/perl print "Content-Type: text/html\n\n"; print ""; print "test.cgi with Perl $]"; print "" }} ''http''''://localhost:8080/sample/cgi-bin/test.cgi'' でアクセスし表示されればOK。