はじめに
以前、seiribako.netのSSL化について記載しました。
SSL化を実現したのが、5月ごろだったはずで、そこには詳しく書かなかったものの、Let’sEncryptを利用すると、サーバー証明書の有効期限が最長で90日間なので、これを更新しなければならないという話までは書きました。
2ヵ月が過ぎ、証明書の自動更新がされていたので、ここにメモをしておきます。
7/31に無事に更新された模様
6月末の状況を確認するのを忘れたのですが、最近証明書を確認したところ、有効期限が7/31から10/29に更新されていたので、無事に自動更新がかかったようです。
更新後のサーバー証明書
これを実現しているのは、サーバー上のcrontabに設定されている以下の1行です。
# m h dom mon dow command
0 0 1 * * /opt/bitnami/letsencrypt/scripts/renew-certificate.sh 2> /dev/null
簡単に説明すると、毎月一日に、 /opt/bitnami/letsencrypt/scripts/renew-certificate.sh というシェルを実行し、実行結果のエラー出力は/dev/nullに出しなさい。という命令です。
毎月一日に実行している割には、証明書の期限が7/31からになっているのは、恐らくサーバーの時刻がUTCで設定されているためだと思います。
調べていないので、正確なことは分かりませんが、サーバー証明書の更新がかかった、8/1 00:00UTCは7/31 19:00CDTぐらいなので、その情報をブラウザ側で適当に処理してくれているという話だと思います。
ちなみに、上記renew-certificate.shと言うシェルには以下のコマンドが記載されています。
!/bin/bash
sudo /opt/bitnami/ctlscript.sh stop nginx
sudo /opt/bitnami/letsencrypt/lego --tls --email="sample8mail.com" --domains="yourdomain.net" --domains="www.yourdomain.net" --path="/opt/bitnami/letsencrypt" renew --days 90
sudo /opt/bitnami/ctlscript.sh start nginx
前後二行はNginxの停止、起動で実際の証明書の更新は真ん中の一行で実現されています。
これらの仕込みをしておくことで、90日毎の証明書の更新が不要になります。
まとめ
- サーバー証明書の自動更新がちゃんと行われていたので、メモしておきました
- 一度登録してうまく行けば、未来永劫うまく行くので、めんどくさい場合はcronを使った自動化がお勧めですが、SEの入り口ぐらいのことではあるので、できない場合はできる人にやってもらうか、手でやるのが良いでしょう