絖綛 N@i.jp  昨日:00051060
 今日:00025721
 総計:00129088
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:03/21 19:08


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

Let's Encryptで常時SSL化してみた話(証明書の更新編)

証明書は自動的に更新されるようにしておこう


8. 証明書の更新

 Let's Encrypt の証明書の有効期間は90日間(約3ヶ月)と短い。残り期間が20日を切るとメールで通知してくれるので、失効前に証明書を更新しなければならない。証明書の更新も"certbot-auto"を使用して行うことができる。手順は簡単で "certbot-auto" に renewパラメタを指定するだけだ。早速更新手順を試してみよう。
 その前に "certbot-auto" はPATHが通っている "/usr/local/bin"配下に置くことにしよう。

$ sudo cp ~/tmp/certbot/certbot-auto /usr/local/bin
$ sudo /usr/local/bin/certbot-auto renew
WARNING: unable to check for updates.
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/y-naito.ddo.jp.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/y-naito.ddo.jp/fullchain.pem expires on 2019-04-20 (skipped)
No renewals were attempted.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 まだたっぷりと有効期間が残っているので証明書を更新する必要はなく、skipped と表示された。残り期間が30日未満になると更新されるということだが、事前に動作確認しておきたいので、そんなに待てない。そこで強制的に証明書を更新してみる。強制的に更新するには --force-renewal オプションを指定する。

$ sudo /usr/local/bin/certbot-auto renew --force-renewal
WARNING: unable to check for updates.
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/y-naito.ddo.jp.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Plugins selected: Authenticator manual, Installer None
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for y-naito.ddo.jp
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed without reload, fullchain is
/etc/letsencrypt/live/y-naito.ddo.jp/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/y-naito.ddo.jp/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 無事に証明書が更新されることが確認できた。ただし頻繁に --force-renewal を行うと Let's encrypt のサーバに余計な負荷をかけることになるので、動作確認のための使用に留めること。
 新しい証明書を Apache2 に反映する。

$ sudo /usr/local/apache2/bin/apachectl graceful
または
$ sudo /usr/local/apache2/bin/apachectl restart

 これで証明書を更新する手順は確認できたが、その度に手作業で証明書を更新するのは面倒だ。このような定型作業は cron や launchd で自動化するに限る。今回のようなワンライナーの場合には cron を使うのが簡単だ。
 "certbot-auto"の実行には root権限が必要なので、root になって cron に登録する。

$ su -
# crontab -e
00 04 * * 1 /usr/local/bin/certbot-auto renew --quiet --deploy-hook "/usr/local/apache2/bin/apachectl graceful"

 上記では毎週月曜日の午前4時に"certbot-auto"が実行される。--deploy-hookオプション(*1)で指定したコマンドは証明書の更新が成功したときだけ実行されるので、ここで新しい証明書を反映する。これで証明書が自動更新されるはずであるが、果たしてうまくいくか?(*2)


備考(*1)
 ネットにある少し古い記事では --post-hookオプションが使用されているかもしれない。
 --post-hookオプションでは証明書の更新が行われるときに指定したコマンドが実行される。更新の正否には関係なく実行されるとのことだ。--post-hook と --deploy-hook のどちらを使うべきか?だが、ウチのような1台で1つのドメインしか運用していない小規模な Webサーバの場合、どちらでも構わないと思う。

備考(*2):2019年1月30日追記
 cron設定から最初の自動更新処理実行日が過ぎたので、更新処理がどうなったかログファイル "/var/log/letsencrypt/letsencrypt.log" を覗いてみた(ちょいと訳あって火曜日の午前4時に動くようにしたので、1/29 04:00 のログになっている)。

# cat /var/log/letsencrypt/letsencrypt.log
2019-01-29 04:00:13,043:DEBUG:certbot.main:certbot version: 0.30.0
2019-01-29 04:00:13,047:DEBUG:certbot.main:Arguments: ['--quiet', '--deploy-hook', '/usr/local/apache2/bin/apachectl graceful']
〜略〜
2019-01-29 04:00:13,633:DEBUG:certbot.cli:Var deploy_hook=/usr/local/apache2/bin/apachectl graceful (set by user).
2019-01-29 04:00:13,634:DEBUG:certbot.cli:Var renew_hook=set(['deploy_hook']) (set by user).
2019-01-29 04:00:13,892:INFO:certbot.renewal:Cert not yet due for renewal
2019-01-29 04:00:13,897:DEBUG:certbot.plugins.selection:Requested authenticator manual and installer None
2019-01-29 04:00:13,898:DEBUG:certbot.renewal:no renewal failures

 これを見ると、今のところ"certbot-auto"が正常に実行されていて、期限があるのでまだ更新の必要は無いと言っているように見えるね。更新期限が来たときに正常に更新されるかは、あと2ヵ月ばかり待つしかないか。

2019年4月6日追記
 結論から言うと、証明書の自動更新は失敗だった。その後の顛末は
こちら


< 過去の記事 [ 1月の 全てのカテゴリ リスト ] 新しい記事 >

2019 calendar
1月
12345
6789101112
13141516171819
20212223242526
2728293031


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.