IT pass HikiWiki - [Memo2011][ITPASS] ika 構築作業ログ 4 (WWW2) Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
11/10/12 に apache2のインストールと設定を関, 大西で行った.(ロガー: 大西)
{{toc_here}}
[((<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|URL:../../server/2010/apache/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年の作業ログ|[Memo2009][ITPASS] tako 構築作業ログ(DNS)(村上(健), 古家, 井谷)>))に載っているとおりにスクリプトを書き換えることにした.
最初にスクリプトのバックアップをとった. その後スクリプトに以下の記述を書き加えた.
### 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サーバ構築ドキュメント>)) へ戻る]
{{toc_here}}
[((<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|URL:../../server/2010/apache/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年の作業ログ|[Memo2009][ITPASS] tako 構築作業ログ(DNS)(村上(健), 古家, 井谷)>))に載っているとおりにスクリプトを書き換えることにした.
最初にスクリプトのバックアップをとった. その後スクリプトに以下の記述を書き加えた.
### 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サーバ構築ドキュメント>)) へ戻る]