[Memo2020][ITPASS]サーバ交換作業(WWW)

phase 5 (tako, ika の交換: 設定ファイルの変更)

編集の際は元のファイルを hoge_old としてバックアップを取った.

  • ika と tako のホスト名を交換 (新 ika には ika, 新 tako には takoと書いた)
    • www 班が編集するファイル
      • /etc/hostname
      • /etc/hosts
        • 例外 : 新 ika には tako, 新 tako には ika と書いた
      • /etc/mailname
      • /etc/gate/gate.conf
      • /etc/exim4/update-exim4.conf.conf
      • /etc/init.d/qmail
        • このファイルのバックアップは作らないことに注意する
    • 上記の場所以外にも古い名前が残っていないか

      # grep tako (または ika) /etc/*
      # grep tako (または ika) /etc/*/*

      などで検索しながら作業した. 検索すると, ディレクトリですとメッセージが大量に出るので /* を増やして検索した.

    • ssh の公開鍵は消去されるので, そのままにしておく.
  • ika と tako の IP アドレスを変更

    /etc/hosts と /etc/network/interfaces 内の IP アドレスを入れ替えた.
    
    # emacs /etc/hosts
    • tako にある /hosts の中身のアドレスは 133.30.109.21 とした.
    • ika にある /hosts の中身のアドレスは 133.30.109.22 とした.
    # emacs /etc/network/interfaces
    • tako にある /interfaces の中身のアドレスは 133.30.109.22 とした.
      • ローカルホストのアドレスは10/35/19.150 とした.
    • ika にある /interfaces の中身のアドレスは 133.30.109.21 とした.

  * ローカルホストのアドレスは10/35/19.151 とした.

  • dns-nameserversの項目 は ika, tako いずれも 133.30.109.22 とした.

phase 7 (サービスの設定変更)

ika の WWW などの設定変更 (担当: 新 WWW 班)

  • [TEBIKI]サービスの開始・停止 を参考に, 以下のサービスが永続的に立ち上がるように設定した

    • apache2
    • openbsd-inetd
    $ sudo cd /etc/init.d
    $ sudo systemctl enable apache2.service
    $ sudo insserv -d openbsd-inetd
    $ sudo chmod 755 openbsd-inetd

phase 9 (再起動後の動作確認)

サービスの起動確認

ps aux コマンドで以下の確認作業を行った.

  • ika
    • httpdが起動していることを確認した.
  • tako
    • httpdが起動していないことを確認した.

サービスの動作確認

ika
  • http: ブラウザで https://ika-itpass.scitec.kobe-u.ac.jp/ にアクセスし, 各ページが正常に表示できるか
  • hiki:に書き込めるか
tako
  • http: が無効になっているか

Let's encrypt による証明書の設定

certbot のダウンロード

Let's Encrypt では, Debian 用に certbot のパッケージが用意 されている. しかし, このパッケージは apache2 の Debian パッ ケージに依存しているため, apache をソースから手動で make している itpass サーバでは使えない. そのため, https://certbot.eff.org/ から, 下のようにして certbot をダウンロードしてインストールした.

"Software" に apache を選択.
"System" に "Debian 10 (buster)" を選択.

当該ページの説明に従って, 下のように作業した.

$ sudo apt update
$ sudo apt install snapd

$ sudo snap install core
$ sudo snap install core; sudo snap refresh core
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

証明書の発行

ダウンロードした certbot を使って itpass.scitec.kobe-u.ac.jp 用の 証明書を発行した.

$ sudo certbot certonly --webroot -m itpadmin@itpass.scitec.kobe-u.ac.jp 
--webroot-path /home/itpass/public_html -d itpass.scitec.kobe-u.ac.jp

なお, certbot のオプションの意味は下の通り.

  • --webroot 既に動作中のウェブサーバ上で, ウェブサーバを停止せずに証明書を発行する.
  • certonly apache の設定ファイルを自動で書き換えずに証明書を取得するのみ. 証明書は /etc/letsencrypt に置かれる.
  • --webroot-path RootPath の設定
  • --email (-m) 初回実行時にメールアドレスを尋ねられなくするためのオプション. つけなくて良かったような気がする.

途中以下のようなことが聞かれるので 2 を選んだ.

What would you like to do?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Keep the existing certificate for now
2: Renew & replace the cert (may be subject to CA rate limits)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Renewing an existing certificate

同様に, epa.scitec.kobe-u.ac.jp, aoe.scitec.kobe-u.ac.jp 用の証明書を発行した.

$ sudo certbot certonly --webroot -m itpadmin@itpass.scitec.kobe-u.ac.jp 
--webroot-path /home/epalab/public_html -d epa.scitec.kobe-u.ac.jp 

$ sudo certbot certonly --webroot -m itpadmin@itpass.scitec.kobe-u.ac.jp 
--webroot-path /home/aoelab/public_html -d aoe.scitec.kobe-u.ac.jp 

これらは選択肢を聞かれなかった.

apache への証明書の設定

/usr/local/apache2/conf/extra/httpd-ssl.conf を編集して発行した証明書を設定した.

# vi /usr/local/apache2/conf/extra/httpd-ssl.conf

編集箇所は下の通り.

ServerName itpass.scitec.kobe-u.ac.jp:443 の項目内で下のように書き換えた.

SSLCertificateFile "/etc/letsencrypt/live/itpass.scitec.kobe-u.ac.jp/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/itpass.scitec.kobe-u.ac.jp/privkey.pem"

ServerName aoe.scitec.kobe-u.ac.jp:443 の項目内で下のように書き換えた.

SSLCertificateFile "/etc/letsencrypt/live/aoe.scitec.kobe-u.ac.jp/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/aoe.scitec.kobe-u.ac.jp/privkey.pem"

ServerName epa.scitec.kobe-u.ac.jp:443 の項目内で下のように書き換えた.

SSLCertificateFile "/etc/letsencrypt/live/epa.scitec.kobe-u.ac.jp/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/epa.scitec.kobe-u.ac.jp/privkey.pem"

前の SSLCertificateFile と SSLCertificateKeyFile はコメントアウトした.

証明書更新のテスト

Let's encrypt の証明書の有効期限は 90 日である. このため, certbot-auto には簡単に証明書を更新する方法が存在する. その方法を設定した.

まずは下のようにして更新をテストした.

# ./certbot renew --dry-run

これを定期的に実行するために cron のためのスクリプトを設定した. 下の内容の /etc/cron.local/daily/240_letsencrypt_renew を作成した.

#!/bin/sh
#
#= Renew certificate
#
MAINTAINERS="Yoshiyuki O. Takahashi"
UPDATE='2020-12-01’
VERSION='1.0'
REFERENCES='none'

COMMAND='/usr/bin/certbot'
DRYRUN='--dry-run'
DRYRUN=''

/bin/echo -e "**** Renew certificate ****"
$COMMAND renew $DRYRUN 2>&1
/bin/echo -e ""

実行権限を与えた.

下のように動作テストを行い, 問題なく動作することを確認した. (ただし, この時点では証明書が新しいため更新されない.)

# /etc/cron.local/daily/240_letsencrypt_renew

動作チェック

  • apache を停止

    # /usr/local/apache2/bin/apachectl -k graceful-stop
    • 停止したかどうかを確認した.
  • apache を起動
    • apache は /usr/local/apache2/bin/apachectl で起動/停止した

      # /usr/local/apache2/bin/apachectl -k start
    • 起動したかどうかを以下のコマンドで確認した.

      # ps aux | grep http

      画面左端に www-data と表示されている行があることを確認した.

  • ブラウザで https://itpass.scitec.kobe-u.ac.jp にアクセスし, ページを正常に見ることができることを確認した.
Last modified:2020/12/02 07:26:17
Keyword(s):
References:[[ITPASS2020]2020年度サーバ構築ログ]