Inuduka's HomePage


Tips
1.apache、tomcat連携 (unix/linux)
2.「.htaccess」によるディレクトリのアクセス制御
3.mod_sslの組み込み

1.apache、tomcat連携

1.mod_jk.soの作成

 /usr/local/以下に解凍。
  uncompress jakarta-tomcat-3.2.1-src.tar.Z
  tar xvf jakarta-tomcat-3.2.1-src.tar.Z
  cd /usr/local/tomcat-src/src/native/apache1.3
 コンパイルする。
  /usr/local/apache/bin/apxs -c -o mod_jk.so 
   -I../jk -I$JAVA_HOME/include 
   -I$JAVA_HOME/include/linux *.c ../jk/*.c

2.mod_jk.soをapacheに組み込む。

 cp mod_jk.so /usr/local/apache/libexec

3.httpd.confを修正(例)。

 LoadModule jk_module libexec/mod_jk.so
 <IfModule mod_jk.so>
  JkWorkersFile C:\tomcat\conf\jk\workers.properties
  JkLogFile  logs/jk.log
  JkLogLevel error
  JkMount /*.jsp ajp12
  JkMount /servlet/* ajp12
  JkMount /examples/* ajp12
  JkMount /cocoon/* ajp13
  Alias /cocoon "/usr/local/tomcat/webapps/cocoon/"
  <Directory "/usr/local/tomcat/webapps/cocoon/">
   Options Indexes FollowSymLinks
  </Directory>
  <Location "/cocoon/WEB-INF/">
   AllowOverride None
   deny from all
  </Location>
  <Location "/laposta/META-INF/">
   AllowOverride None
   deny from all
  </Location>
 </IfModule>

2.「.htaccess」によるディレクトリのアクセス制御

1.「.htaccess」を有効にするため、httpd.conf から allow overwrite none の指定を削除。

2.ホストによるアクセス制御例

 order deny,allow
 deny from all
 allow from 192.168.0.1

3.ユーザによるアクセス制御例

 AuthType Basic
 AuthName "nsd.jip.co.jp"
 AuthUserFile /usr/local/apche/auth/htpasswd
 require valid-user

4.上記3のためのパスワードファイル生成
 cd /usr/local/apche/auth/htpasswd
 htpasswd -c /usr/local/apche/auth/htpasswd inu
  ( htpasswd [-cmdps] passwordfile username )

3.mod_sslの組み込み

1.OPENSSLのインストール。

 uncompress openssl-0.9.6b.tar.gz
 tar xvf openssl-0.9.6b.tar
 chown -R root openssl-0.9.6b
 cd openssl-0.9.6b
 ./config
 make
 エラーがないか確認。
  make test
 /usr/local/ssl へインストール。
  make instal

2.mod_sslのインストール

 uncompress mod_ssl-2.8.4-1.3.20.tar.gz
 tar xvf mod_ssl-2.8.4-1.3.20.tar
 以下のオプションで configure を実行。
  ./configure --with-apache=../apache_1.3.20
   --with-ssl=../openssl_0.9.6b --enable-moddule=so
 アパッチのコンパイル
  cd /usr/local/src/mod_ssl/apache_1.3.20
  make
 秘密鍵、CSR、サーバ証明書を作成する場合は、この後続けて
 certificate  オプションを付けて make を実行。
  make certificate → 詳細は下記 6. へ
 インストールの際は念のため APACHE を停止させておく。
  /usr/local/apache/bin/apchectl stop
  make install

3.mod_jk.so の作成(tomcatと連携する場合)

 mod_ssl が組み込まれた APACHE は EAPI対応としてコンパイルされているので
 mod_jk.so が 標準API対応のアパッチでコンパイルされている場合は、
 EAPI対応でコンパイルし直す必要がある。
  cd /usr/local/src/jakarta-tomcat-3.2.x-src/src/native/apache1.3
  /usr/local/apache/bin/apxs -o mod_jk.so -DEAPI -DSOLARIS
   -I../jk -I/usr/java/include -I/usr/java/include/solaris 
   -lposix4 -c *.c ../jk/*.c
  cp mod_jk.so /usr/local/apache/libexec/

4.TOMCAT 設定ファイル

 SSLの情報をajp13でtomcatにフォワードするので、server.xmlファイルに以下を
 ajp12の同様の記述がある場所の下に追加する。
 <Connector
 className="org.apache.tomcat.service.PoolTcpConnector">
  <Parameter name="handler" 
   value="org.apache.tomcat.service.connector.Ajp13ConnectionHandler"/>
  <Parameter name="port"
   value="8009"/>
 </Connector>

 workers.property ファイルにajp13の記述がない場合も追加する。内容はajp12
 の内容を参考にする。(おそらくデフォルトで記述されているので詳細は省く。)
 *ただしtomcatのインストールパスとjavaのインストールパス、そしてデリミタ
  がデフォルトでは誤りがあるので修正しておく。

 workers.tomcat_home=/usr/local/tomcat
 workers.java_home=/usr/local/java1.3.1
 ps=/

5.APACHE 設定ファイル

 httpd.confに以下を追加
 <IfDefine SSL>
  Listen 80
  Listen 443
 </IfDefine> −> Portを指定している辺りに追加
 <IfDefine SSL>
  AddType application/x-x509-ca-cert .crt
  AddType application/x-pkcs7-crl .crl
 </IfDefine>
 <IfModule mod_ssl.c>
  SSLPassPhraseDialog builtin
  SSLSessionCache dbm:/usr/local/apache/logs/ssl_scache
  SSLSessionCacheTimeout 300
  SSLMutex file:/usr/local/apache/logs/ssl_mutex
  SSLRandomSeed startup builtin
  SSLRandomSeed connect builtin
  SSLLog /usr/local/apache/logs/ssl_engine_log
  SSLLogLevel info
 </IfModule> −>バーチャルホストの設定の前辺りに追加

 <VirtualHost 192.168.***.***:443>
  Port 443
  DocumentRoot /usr/local/apache/documentroot/***
  ServerName ssl.***.co.jp
  LogLevel debug
  ErrorLog /usr/local/apache/logs/ssl_error.log
  CustomLog /usr/local/apache/logs/ssl_request_log \"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\"%b"
  SSLEngine on
  SSLCertificateFile /usr/local/apache/conf/ssl.crt/***.crt
  SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/***.key

  *SSLCertificateChainFile conf/ssl/ssl.crt/***.crt
  (中間認証局の証明書がある場合、上の一行を追加)

  JkMount /*.jsp ajp13
  JkMount /servlet/* ajp13
  JkMount /*.xml ajp13
  JkMount /*.xi ajp13
 </VirtualHost> 

 APACHEの起動
  /usr/local/apache/bin/apachectl startssl
 この後パスワードを尋ねてくるので、CSR作成の際に使用したものを入力する。
  Apache/1.3.20 mod_ssl/2.8.4 (Pass Phrase Dialog)
  Some of your private key files are encrypted for security reasons.
  In order to read them you have to provide us with the pass phrases.
  Server ssl:443 (RSA)
  Enter pass phrase: 《*****》

 *バーチャルホストでSSLサーバと非SSLサーバを切り分ける場合
  非SSL側を SSLEngine off に設定し、DocumentRootで切り分ける。

 a . DocumentRoot /usr/local/apache/documentroot
 b . DocumentRoot /usr/local/apache/ssl/documentroot

6.秘密鍵、CSR、サーバ証明書について

 実運用ではOPEN-SSLコマンドを用いてKEY等を作成のこと。
  make certificate
 を実行し、ウィザードに沿って質問に答える。質問は13項目ある。
 (1) Signature Algorithm ((R)SA (D)SA) [R]: R
 (2) Country name: JP(2文字からなる略語 −ISO 国別記号−)
 (3) State or Province Name: TOKYO(都道府県名)
 (4) Locality Name: CHIYODA(市区町村)
 (5) Organize Name: INU(JPNICに登録の g.[Organaization]と同じ。)
 (6) Organization Unit Name: SYSTEM(部門名 [任意])
 (7) Server Name: www5.inu.co.jp(WWWサーバ名+ドメイン名/ FQDN)
 *(1)〜(7)までがディスティンギッシュネームとして登録される。
 (8) Email Address: admin@inu.co.jp(メールアドレス)
 (9) Certificate Validity: 365(有効期限)
 (10) Certificate Version: 3
 (11) Encrypt the private ...: Y
 (12) Enter PEM pass phrase: ******(パスワード)
 (13) Verifying password...: ****** 

 上記で作成された各ファイルは、アパッチのコンパイル時に以下のフォルダへ出力される。
 (1) 秘密鍵 /usr/local/apache/conf/ssl.key/server.key
 (2) CSR /usr/local/apache/conf/ssl.csr/server.csr
 (3) 証明書 /usr/local/apache/conf/ssl.crt/server.crt

 実運用では証明書は認証機関から発行してもらうが、ここでは動作確認をするため
 ローカルCAで発行している。(独自にCAを構築・運営する場合はopenssl を
 使用して設定をするのだが、ここでは触れない。)また、CSRは認証機関から
 証明書を発行してもらうために必要になる。

7.証明書のインストール

 認証機関にCSRを提出し、各種手続きを進める。
  → http://www.verisign.co.jp/ 日本ベリサイン

 認証機関から証明書が発行されたら上記
 上記6の場所へ任意のファイル名で保存する。この時にrootのみ読めるように権限を変更しておく。
  chmod 400 /usr/local/apache/conf/ssl.crt/cert.crt
 httpd.conf の以下の部分に 7.2の証明書のパスを設定する。
  SSLCertificateFile /usr/local/apache/conf/ssl.crt/cert.crt
 APACHEを再起動させる。


Copyright (c) 2001-2002 Takeru Inuduka Daisensei.All rights reserved.