私の運用しているDarkgrayサーバのSSL証明書は certbotで取得している。
今までの経緯
このcertbotで取得したSSL証明書の有効期限は3か月しかない。 certbot renewと言うコマンドオプションで更新できるのだが・・・ 今まで自動更新するように設定してなかった。
このサイトがアクセス不能になって 証明書の有効期限が切れているのを知って certbot renewコマンドを手動で実行すると言うイタチごっこを何回か繰り返している。そこで 今回は同じ失敗を繰り返さないように 自動更新するように設定してみた。
certbotのオプションの説明
certbotで更新するのに関係しそうな幾つかのオプションをここに記録しておこう。
–force-renew 通常はSSL証明書の有効期限の一か月前を切ると更新されるのだが この –force-renewオプションで 有効期限に関係なく強制的に更新される。 ただし むやみに更新を掛けると Let’s Encrypt 認証局のレート制限に引っかかる恐れがある。
–dry-run 実際に証明書を更新する事無く テスト/シミュレーションを行うことができる。
–post-hook 証明書が更新された場合、証明書を更新した後に このオプションによって任意のコマンドを実行できる。通常はhttpdなど 証明書を参照する各種のサービスを再起動するのに使用される。
注意) 上記のオプションの行頭のハイフンが一個しか表示されていない。 実際のオプションの入力では 行頭のハイフンは2個必要、エディタ画面では2個入力してるのだが ブログでの表示画面では1個しか表示されていない。なんだかな・・・
certbot renewの自動更新設定
以下の様に(ユーザーはrootで)crontabで設定してみた。 どっかのサイトに「rootでcrontabは使ってはいけない。」みたいな記事があったような気もするが・・ 気にせず使っちゃう。
[] crontab -e
20 4 * * 0 /bin/certbot renew --post-hook "systemctl reload httpd vsftpd dovecot"
上記の設定で 週一回 日曜の朝4時20分に更新される(はずだが まだ未検証)。 更新は月一回でも良いように見えるが 何かの拍子にcronの実行が失敗した場合 SSL証明書が失効する恐れがあるので 週一回の更新にしてみた。 さてどうなるか? しばらく これで様子を見てみる。