IT pass HikiWiki - [Memo2017][ITPASS]Apache のインストールと設定 Let's encrypt による証明書の設定 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

= 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



== 参考ページ

* ((<certbot - Apache on Other UNIX|URL:https://certbot.eff.org/lets-encrypt/pip-apache>))

* ((<Let's Encrypt の使い方|URL:https://letsencrypt.jp/usage/>))

* ((<Let's Encrypt ユーザーガイド|URL:https://letsencrypt.jp/docs/using.html#renew-subcommand>))

* ((<Let’s ((<Let's EncryptでWebサイトSSL化に挑戦したら簡単過ぎた
|URL:https://www.tetsis.com/blog/?m=201710>))