apache & ssl & tomcat

以下内容摘自:http://www.deer-n-horse.jp/linux/server/apache-ssl-tomcat/index.html

apache & ssl & tomcat


Apache と SSL と Tomcat をまぜたWebアプリケーションサーバの構築記。
ここまで来るとなんだか幕の内弁当みたいな心境だ...なぜだろう。

RPMでインストールしてもいいのだけど今回の案件は /usr/local にぶちこんでくれ、 とのことなのでソースからコンパイル/インストールすることにする。

★用意するもの★
  • apache
    http://www.apache.orgから今回は version 1.3.19 を利用する。
  • OpenSSL
    http://www.openssl.orgから今回は version 0.9.6 を利用する。
  • apache+ssl
    http://www.apache-ssl.orgから 今回は apache_1.3.19+ssl_1.42 を利用する。
  • tomcat
    http://jakarta.apache.orgから version 3.2.1 を利用する。
    ソースからコンパイルするためには XMLパーサ などのライブラリが必要だが コンパイルできなかったためにバイナリもダウンロードする。
    ソースはソースで apache 経由で利用するときに使用するのでダウンロード しておく方が無難。
注意: Java動作環境はすでに整っているものとする。

★調理方法★

手順としては以下の順序で行ってみよう♪
  1. Tomcat をインストールして実行できるか確認する。
  2. apache+ssl をコンパイル/インストールして動作を確認する。
  3. apache+ssl 経由で Tomcat にアクセスできるよう設定し、動作を確認する。
1. Tomcat をインストールして実行できるか確認する。

インストール対象ディレクトリに Tomcat バイナリアーカイブを展開する。

# cd /usr/local/ ; tar xfvz /usr/local/src/jakarta-tomcat-3.2.1.tar.gz

個人的な問題であるが解凍後のディレクトリ名がバージョンを含んでいるので改名するか シンボリックリンクをはる。

# cd /usr/local/jakarta-tomcat-3.2.1 /usr/local/jakarta-tomcat

以上♪。
お近くのブラウザから http://[TargetURL]:8080/ を叩いてTomcatのサンプルページが出る ことを確認すること。



2. apache+ssl をコンパイル/インストールして動作を確認する。

コンパイルディレクトリを /usr/local/src にするとして、 apache と apache+ssl を解凍する。

# cd /usr/local/src
# tar xfvz /usr/local/src/apache-1.3.19.tar.gz
# cd apache-1.3.19/ ; tar xfvz /usr/local/apache_1.3.19+ssl_1.42.tar.gz

注意:OpenSSL がインストールされていなかったらインストールするように。

SSLなしのapacheを立てる時と区別できるようにディレクトリ名を変更する。

# cd /usr/local/apache-1.3.19 /usr/local/src/apache_1.3.19+ssl_1.42

展開したディレクトリで apache のソースに SSL用パッチを当てる。

# patch -p1 < SSLpatch

apache をコンパイルする。
今回はインストール先を /usr/local/apache+ssl と prefix オプションを configure にあてる。
その他にデフォルト configure では DSO(Dynamic Shared Object)サポートにならないのでそのオプション も当てることにする。

# ./confiure --prefix=/usr/local/apache+ssl --enable-module=all --enable-shared=max

コンパイル/インストールする。

# make ; make install

bin/ ディレクトリに httpsd ができたことを確認する。

そのままでは httpsd は動かないので apache+ssl のソースディレクトリにある SSLconf/conf/httpsd.conf を /usr/local/apache+ssl/conf/ssl.conf にコピーする。

# cp /usr/local/src/apache_1.3.19+ssl_1.42/SSLconf/conf/httpsd.conf /usr/local/apache+ssl/conf/ssl.conf

/usr/local/apache+ssl/conf/httpsd.conf に以下の一行を追加する。

Include conf/ssl.conf

conf/ssl.conf を編集。
/usr/local/apache+ssl/conf/httpd.conf と同じ項目が若干記述されているので変更する。

apacheインスタンスの権限やドキュメントルート、サーバ名そしてロードモジュールなどが本体の httpsd.conf と コンフリクトするのでそれをコメントアウトして、OpenSSLで作成する証明書のパスを記述する。

参考までに...ssl.conf

証明書を作成する。とりあえずダミーな証明書を作る。
スクリプト用意してみた。gendummycerts

できた証明書は ssl.conf に記述してあるパスにしまっておきましょう。

libssl.so を ssl.conf に記述したため、 /usr/local/src/apache_1.3.19+ssl_1.42/modules/ssl/ から /usr/local/apache+ssl/libexec にコピーする。
注意: 本来 apache_ssl.so があればいらない行動なのだが実行時にエラーが出たため apache_ssl.so の 読み込みを httpsd.conf で外した。どっちでもいいだろぅ。

httpsd を動かしてみる。
-c オプションで設定ファイル httpsd.conf を指定すればいいけど SystemV に乗っ取り initスクリプトを つくったのでそれに合わせ、 httpsd.conf から httpd.conf にシンボリックリンクをはる。

httpsd を /usr/sbin にコピーして実行してみる。

# cp /usr/local/apache+ssl/bin/httpsd /usr/sbin/httpsd
# /etc/rc.d/init.d/httpsd start

エラーが出るようでしたら設定を直してください。
多分設定の問題です。LoadModule とかの...

動作確認。
お近くのブラウザで https://[TargetURL] に叩く。



あ、デフォルトで index.html が htdocs/ にないので適当な index.html.ja.jis でも index.html に シンボリックリンク張ってみてください。

3. apache+ssl 経由で Tomcat にアクセスできるよう設定し、動作を確認する。

Tomcat を apache 経由で叩くには mod_jk.so をapacheに加える必要があります。
/usr/local/src/ に jakarta-tomcat-3.2.1-src.tar.gz を展開してコンパイルします。

# cd /usr/local/src/ ; tar xfvz /usr/local/src/jakarta-tomcat-3.2.1-src.tar.gz

mod_jk.so を作るディレクトリへ移動。

# cd /usr/local/src/jakarta-tomcat-3.2.1-src/src/native/apache1.3/

ここで Makefile.linux というのがあるからこれを Makefile にシンボリックリンクをはり編集する。

修正箇所は APXS= のところ。 APXS=/usr/local/apache+ssl/bin/apxs にして、

# make

で mod_jk.so が作られる。
注意: ここでエラーがかえって来るのは apache をコンパイルするときに DSO サポートが付いていない からだと思われる。apacheのコンパイルからやり直してください。

mod_jk.so を apache が読める所におく。

# cp /usr/local/src/jakarta-tomcat-3.2.1-src/src/native/apache1.3/mod_jk.so /usr/local/apache+ssl/libexec

apache+ssl の設定ファイル httpd.conf の最後に以下の一行を追加する。

Include /usr/local/jakarta-tomcat/conf/mod_jk.conf-auto

mod_jk.conf というファイルもあるがLinuxでは-auto付きファイルを使うほうが楽♪。
mod_jk.conf-auto に mod_jk.so のパスを書くところがあるのでそれが間違っていたら編集すること。

tomcat と apache+ssl を再起動する。

# /usr/local/jakarta-tomcat/bin/tomcat.sh start
# /etc/rc.d/init.d/httpsd restart

お近くのブラウザで https://[TargetURL]/examples/ を打つと認証画面がでてサンプルを見れるようになる。
ちゃんと鍵アイコンがかかっていますねぇ♪。



★参考資料★
原文地址:https://www.cnblogs.com/sun_moon_earth/p/730794.html