Let's Encrypt の証明書を更新する

Posted on 2018-11-04 in zakki

Let's Encrypt の証明書更新を行います。 さっさとやらないと、とか言っといてすぐ腰が重くなる。

手動更新

試しに手動更新をしてみる。

ubuntu@localhost:~$ sudo letsencrypt renew
Processing /etc/letsencrypt/renewal/mkr-note.net.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/mkr-note.net/fullchain.pem (skipped)
No renewals were attempted.

更新が必要なタイミングにならないと、コマンドは蹴られないけど更新がスキップされる。

--force-renewal オプションをつけると強制的に更新を行うのでしてみた。

ubuntu@localhost:~$ sudo letsencrypt renew --force-renewal
Processing /etc/letsencrypt/renewal/mkr-note.net.conf
new certificate deployed without reload, fullchain is /etc/letsencrypt/live/mkr-note.net/fullchain.pem

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/mkr-note.net/fullchain.pem (success)

よかった。

有効期限

https://letsencrypt.jp/blog/2015-11-09.html

有効期間は 90 日で 60 日毎の更新がオススメされている。60 日は短いだろうけど世の中そんなものだからちゃんと自動化せーよってことね。

自動更新

んじゃ自動更新。cron でコマンドを叩けばいいのだけど、コンテナの中の nginx(http サーバ ) も再起動しなければならない。docker-compose で出来ることは知ってるけど、それがベストなのかっつーとよくわからない。

  • $ sudo service nginx stop
  • $ sudo letsencrypt renew
  • $ sudo service nginx start

  • $ sudo letsencrypt renew
  • $ sudo docker-compose restart < コンテナサービス名 >

にして cron に入れる。/etc/cron.d/( 適当ファイル名 ) ね。

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
COMPOSE_FILE=(docker-compose.yml の指定 )
MAILTO=( メールアドレス )

0 0 1 */2 *   root    letsencrypt renew --force-renewal; docker-compose restart proxy >> /tmp/log.log

2 カ月毎の 1 日に cron 起動するように。COMPOSE_FILE を指定すると、docker-compose がどこでも気兼ねなく打てます。

メールアドレスって書いているけど、MTA(postfix) 入れてないのでメールは出ない。install するだけなのかな。メールを受け取るのが主目的ではなくて、スクリプト書いて (1 人 )Slack 通知でもいいし、何某かの通知を得て確認したいだけ。まあ次回かなこれは。。