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>))
= 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 の設定
初回実行時にメールアドレスを尋ねられなくするためのオプション.
つけなくて良かったような気がする.
同様に, 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>))
*