Let'sEncrypt証明書の自動更新を行う
Let's Encryptは、難しい手続きなく証明書を取得できる素晴らしいサービスですが、証明書の有効期限が90日と短いことが特長です。 今回は、この証明書の更新をcronで自動的に行いたいと思います。
cronとは
指定した時刻に処理を自動的に行ってくれる仕組みのことです。
更新方法
WEBサーバーの停止
apachectl stop
WEBサーバーが動いていると、更新することが出来ないので停止させます。
証明書の更新
admin@ubuntu:/home/admin/certbot$ ./letsencrypt-auto renew --force-renew
このコマンドを叩けば強制的に証明書が更新されます。ただし、特定の期間で更新できる上限が設けられているのでテストを行う際は--dry-run
オプションをつけると良いと思います。
WEBサーバーの再開
apachectl start
更新が終わったら、サービスを再開させます。
これらを自動化する
シェルスクリプトを用意する
#!/bin/bash #apacheの停止 apachectl stop cd /home/admin/certbot # --dry-runオプションをつければ、証明書は更新されずに動作のみ確認することができる ./letsencrypt-auto renew --force-renew #apache再開 apachectl start
このスクリプトを /root/update.sh
として保存します。
cronで定期的に実行する
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO="" HOME=/ 43 4 1 * * root /root/update.sh
/etc/cron.d/update-everymonth
として保存します。(パスがあっていれば名前はなんでも良いです。)
update-everymonth
は毎月1日の04:43に/root/update.sh
をroot権限で実行するという内容が書かれています。