| Tips |
|---|
|
■1.apache、tomcat連携 (unix/linux) ■2.「.htaccess」によるディレクトリのアクセス制御 ■3.mod_sslの組み込み |
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>
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 )
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を再起動させる。