[Memo2011][ITPASS] ika 構築作業ログ 4 (WWW2)

11/10/12 に apache2のインストールと設定を関, 大西で行った.(ロガー: 大西)

[ITPASSサーバ構築ドキュメント へ戻る]

起動時にトラブル

ログインできない

原因は, 昨日行った PATH の設定. 具体的には, /etc/profile の末尾に

if [ -f /etc/bash.bashrc ]; then
  . /etc/bash.bashrc
fi

と追記していたが, lenny では /etc/profile にこれを追記すべきだったのに対し, squeeze ではこれを追記する必要が無かった. Linux カーネルのバージョンアップに伴って変更されたと考えられる.

対処

/etc/profile に追記した部分を削除した. これでログインできるようになった.

SSL 用の証明書の作成

openssl の設定を変更

# vim /etc/ssl/openssl.cnf

[usr_cert] セクションの
nsCertType=server のコメントアウトを外した

[v3_ca] セクションの
nsCertType=sslCA,emailCA のコメントアウトを外した.

プライベート CA の作成

まず, apache の config ディレクトリに入り, 次のように証明書を格納するディレクトリを作成した.

# cd /usr/local/apache2/conf
# mkdir ca
# cd ./ca/
# mkdir {itpass,epa,aoe のそれぞれの名称で作成}

以下の作業は ServerName : itpass.scitec.kobe-u.ac.jp, epa.scitec.kobe-u.ac.jp, aoe.scitec.kobe-u.ac.jp のそれぞれについて行った. cps については現段階では行っていない.

# /usr/lib/ssl/misc/CA.pl -newca
CA certificate filename (or enter to create) (空で Enter)

Enter PEM pass phrase: (適当な文字列入力)

Country Name (2 letter code) [AU]: JP
State or Province Name (full name) [Some-State]: Hyogo
Locality Name (eg, city) []: Kobe
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Private_CA
Organizational Unit Name (eg, section) []: Private_CA
Common Name (eg, YOUR name) : Private_CA
Email Address: itpadmin_at_itpass.scitec.kobe-u.ac.jp
A challenge password: (空で Enter)
A optional company name: (空で Enter)

Enter pass phrase for ./demoCA/private/./cakey.pem: (先と同じパスフレーズ)

この作業で以下のようなディレクトリ構造になった.

/usr/local/apache2/conf/ca
                        |
                        └ demoCA [ 各種証明書等のルートディレクトリ ]
                            |
                            ├ certs [ 証明書等のディレクトリ(バックアップに利用) ]
                            |
                            ├ crl [ 破棄証明書一覧用のディレクトリ ]
                            |
                            ├ newcerts [ クライアント証明書(sireal追番)のディレクトリ ]
                            |   |
                            |  ├ xxxxx..pem [ クライアント証明書 ]
                            |  |    :
                            |  └ xxxxx..pem [ クライアント証明書 ]
                            |
                            ├ private [ CA用の秘密鍵用ディレクトリ ]
                            |  |
                            |  └ cakey.pem [ CA用の秘密鍵 ]
                            |
                            ├ cacert.pem [ CA用の証明書 ]
                            ├ index.txt     [ クライアント証明書用DB ]
                            └ serial [ クライアント証明書用シリアル ]

以下で, サーバ用 CA 証明書を作成した.

# openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt

ブラウザに登録されるバイナリ DER フォーマットで記述されたファイルの作成.

# openssl x509 -inform PEM -outform DER -in ./demoCA/cacert.pem der -out ./demoCA/ca.der

サーバ用秘密鍵の作成.

# /usr/lib/ssl/misc/CA.pl -newreq-nodes

 Country Name (2 letter code) [AU]: JP
 State or Province Name (full name) [Some-State]: Hyogo
 Locality Name (eg, city) []: Kobe
 Organization Name (eg, company) [Internet Widgits Pty Ltd]: Kobe University
 Organizational Unit Name (eg, section) []: ITPASS (他に "EPA lab.", "AOE lab." として登録)
 Common Name (eg, YOUR name) : itpass.scitec.kobe-u.ac.jp (ここは itpass の他に, epa, aoe の分をそれぞれ作成する)
 Email Address: itpadmin_at_itpass.scitec.kobe-u.ac.jp
 A challenge password: (空で Enter)
 A optional company name: (空で Enter)

サーバ用証明書の作成.

# /usr/lib/ssl/misc/CA.pl -sign
...
Enter pass phrase for ./demoCA/private/cakey.pem: (さきほどのパスフレーズを入力)
...
Sign the certificate? [y/n]: y[Enter]
1 out of 1 certificate requests certified, commit? [y/n] y[Enter]

サーバ証明書の crt ファイルへの書き出し.

# openssl x509 -in newcert.pem -out server.crt

これらの作業により, demoCA 以下に ca.der が, カレントディレクトリに server.crt, newkey.pem が作成された. これらのファイルを証明書を格納するために作成した ca ディレクトリ以下に格納した.

# mv server.crt ./itpass(この名称は適宜読み替え)/
# mv newkey.pem ./itpass(この名称は適宜読み替え)/server.key
# mv demoCA/ca.der ./itpass(この名称は適宜読み替え)/

最後に demoCA ディレクトリ以下を削除した.

# rm -r demoCA/

これで鍵の作成は完了した. ここまでを itpass, epa, aoe のそれぞれについて計 3 回行った.

動作チェック

まず, /home/ 以下に itpass/, epalab/, aoelab/ という 3 つのディレクトリを作り, さらにそれぞれのディレクトリ内に public_html/ というディレクトリを作った.

apache は /usr/local/apache2/bin/apachectl で起動/停止する. 以下のコマンドで apache を起動した.

# /usr/local/apache2/bin/apachectl -k start

起動したかどうかを以下のコマンドで確認した.

# ps aux

画面左端に www-data と表示されていた. これで起動したことが確認できた.

itpass ディレクトリの下に public_html ディレクトリを作成し, そこに test というディレクトリを作成した. test ディレクトリの下に test.txt というファイルを作成した. ブラウザで当該 URL (http://tako-itpass.scitec.kobe-u.ac.jp/test/test.txt)にアクセスし, そのファイルの内容が正常に表示されていることを確認した. URL に記述するとき, "http://..." と "https://..." の両方に関して行ってみたところ, どちらの場合もファイルの内容が正常に表示された.

以下のコマンドで apache を停止した.

# /usr/local/apache2/bin/apachectl -k graceful-stop

画面左端の www-data の表示が消え, apache が停止したことを確認した. apache のエラーログ /var/log/httpd-error.log を確認し, 特にエラーなどは出ていないことを確認した.

起動スクリプトを用意する

サーバの起動時に自動的に起動させるため, apache2 の起動スクリプト を作成した.

Debian の apache パッケージに含まれる/etc/init.d/apache を元に 起動スクリプトを apache2 用に多少書き換えたものを apache2 から入手した. このファイルを /etc/init.d/apache2 にコピーし, 以下のようにパーミッションを設定した.

# wget http://itpass.scitec.kobe-u.ac.jp/server/2010/apache/apache2
# cp apache2 /etc/init.d/
# chown root:root /etc/init.d/apache2
# chmod 755 /etc/init.d/apache2

ランレベルごとに apache2 の動作を設定した.

# update-rc.d apache2 defaults

以下のようなエラーメッセージが出た.

update-rc.d: using dependency based boot sequencing
insserv: warning: script 'K01apache2' missing LSB tags and overrides
insserv: warning: script 'apache2' missing LSB tags and overrides

ここで, 2009年の作業ログに載っているとおりにスクリプトを書き換えることにした. 最初にスクリプトのバックアップをとった. その後スクリプトに以下の記述を書き加えた.

### BEGIN INIT INFO
# Provides:          apache2
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Should-Start:      $network $syslog
# Should-Stop:       $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop apache2
# Description:       bind9 is a Domain Name Server (DNS)
#        which translates ip addresses to and from internet names
### END INIT INFO

これで, コマンドを再度実行すると, 以下のようなメッセージが出た.

# update-rc.d apache2 defaults

update-rc.d: using dependency based boot sequencing

マニュアルにあるメッセージは以下のようなものである.

# update-rc.d apache2 defaults

update-rc.d: warning: /etc/init.d/apache2 missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/apache2 ...
   /etc/rc0.d/K20apache2 -> ../init.d/apache2
   /etc/rc1.d/K20apache2 -> ../init.d/apache2
   /etc/rc6.d/K20apache2 -> ../init.d/apache2
   /etc/rc2.d/S20apache2 -> ../init.d/apache2
   /etc/rc3.d/S20apache2 -> ../init.d/apache2
   /etc/rc4.d/S20apache2 -> ../init.d/apache2
   /etc/rc5.d/S20apache2 -> ../init.d/apache2

シンボリックリンクに関するメッセージが表示されなかった. しかし確認してみるとリンクは貼られており, 再起動するとapacheが起動したため問題ないとした.

[ITPASSサーバ構築ドキュメント へ戻る]

Last modified:2011/10/12 20:01:52
Keyword(s):
References:[[ITPASS2011]2011年度サーバ構築ログ]