まとめも

大事だと思ったこと、困ったところのメモ

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権限で実行するという内容が書かれています。

Let's encrypt で証明書取得

li-one.hatenablog.jp