[Memo2017][ITPASS]Apache のインストールと設定 Let's encrypt による証明書の設定
Apache のインストールと設定 - Let's encrypt による証明書の設定
これまではプライベート証明書を用いてきたが, Let's encript (https://letsencrypt.org/) を無料で利用できることが分かったため, それを用いた証明書の設定を行う.
Let's Encrypt 総合ポータル (https://letsencrypt.jp/) の Let's Encrypt の使い方 (https://letsencrypt.jp/usage/) に従って作業する.
作業用ディレクトリの作成
作業ディレクトリを作成した.
$ sudo -s # cd /usr/local/src # mkdir certbot # cd certbot
certbot のダウンロード
Let's Encrypt では, Debian 用に certbot のパッケージが用意 されている. しかし, このパッケージは apache2 の Debian パッ ケージに依存しているため, apache をソースから手動で make している itpass サーバでは使えない. そのため, https://certbot.eff.org/ から, 下のようにして certbot をダウンロードしてインストールした.
"Software" で apache を選択. "System" で "Other UNIX" を選択.
当該ページの説明に従って, 下のように作業した.
# wget https://dl.eff.org/certbot-auto # chmod a+x certbot-auto
証明書の発行
ダウンロードした certbot-auto を使って itpass.scitec.kobe-u.ac.jp 用の 証明書を発行した.
# ./certbot-auto --webroot certonly \ --email itpadmin@itpass.scitec.kobe-u.ac.jp \ --webroot-path /home/itpass/public_html \ -d itpass.scitec.kobe-u.ac.jp
下のように聞かれた.
Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel:
A とした.
さらに下のように聞かれた.
Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o:
N とした.
これで終了.
なお, certbot-auto のオプションの意味は下の通り.
- --webroot 既に動作中のウェブサーバ上で, ウェブサーバを停止せずに証明書を発行する.
- certonly apache の設定ファイルを自動で書き換えずに証明書を取得するのみ. 証明書は /etc/letsencrypt に置かれる.
- --webroot-path RootPath の設定
- --email 初回実行時にメールアドレスを尋ねられなくするためのオプション. つけなくて良かったような気がする.
同様に, epa.scitec.kobe-u.ac.jp, aoe.scitec.kobe-u.ac.jp 用の証明書を発行した.
# ./certbot-auto --webroot certonly \ --email itpadmin@itpass.scitec.kobe-u.ac.jp \ --webroot-path /home/epalab/public_html \ -d epa.scitec.kobe-u.ac.jp # ./certbot-auto --webroot certonly \ --email 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:442 の項目内で下のように書き換え.
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"
apache の再起動.
# systemctl restart apache2
https 領域内 (hiki など) にブラウザでアクセスできることを確認した.
証明書更新のテスト
Let's encrypt の証明書の有効期限は短く, 90 日である. このため, certbot-auto には簡単に証明書を更新する方法が存在する.
まずは下のようにして更新をテスト.
# ./certbot-auto renew --dry-run
エラーなく動作した.
これを定期的に実行するために cron のためのスクリプトを設定する. 下の内容の /etc/cron.local/daily/240_letsencrypt_renew を作成した.
#!/bin/sh # #= Renew certificate # MAINTAINERS="Yoshiyuki O. Takahashi" UPDATE='2018-04-25' VERSION='1.0' REFERENCES='none' COMMAND='/usr/local/src/certbot/certbot-auto' DRYRUN='--dry-run' DRYRUN='' $COMMAND renew $DRYRUN
実行権限を与えた.
下のように動作テストを行い, 問題なく動作することを確認した. (ただし, 現時点では証明書が新しいため更新されない.)
# /etc/cron.local/daily/240_letsencrypt_renew
Keyword(s):
References:[[ITPASS2017]2017年度サーバ構築ログ]