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サーバ構築ドキュメント>)) へ戻る]