letsencryptの証明書を自動更新するスクリプトの紹介です。
以前から作ってはいたのですが、色々と問題があったり、サーバー環境が変わったりで完全版を残せていなかったので改めてまとめました。
※letsencryptのインストールやshell scriptの実行方法等には触れません。
月に一回証明書の有効期限を問わず更新し(--force-renew
)、更新結果(成功または失敗)をslack通知するスクリプトです。
slackの設定値は外部ファイルで管理しています。
#!/bin/sh
# Import config
. /home/bmf/scripts/conf/slack.conf
# Stop Nginx
/usr/sbin/service nginx stop
# POST
if ! /home/bmf/certbot/certbot-auto renew --force-renew ; then
sleep 15
# Slack Title
TITLE=${TITLE:-"Let's Encrypt更新エラー通知"}
# Slack Message
MESSAGE=${MESSAGE:-"証明書の更新に失敗しました。"}
#POST
curl -s -S -X POST --data-urlencode "payload={
\"channel\": \"${SL_CH_LETSENCRYPT}\",
\"username\": \"${SL_BOTNAME}\",
\"attachments\": [{
\"color\": \"danger\",
\"fallback\": \"${TITLE}\",
\"title\": \"${TITLE}\",
\"text\": \"${MESSAGE}\"
}]
}" ${SL_WEBHOOKURL} > /dev/null
else
sleep 15
# Slack Title
TITLE=${TITLE:-"Let's Encrypt更新完了通知"}
# Slack Message
MESSAGE=${MESSAGE:-"証明書を更新しました!"}
#POST
curl -s -S -X POST --data-urlencode "payload={
\"channel\": \"${SL_CH_LETSENCRYPT}\",
\"username\": \"${SL_BOTNAME}\",
\"attachments\": [{
\"color\": \"danger\",
\"fallback\": \"${TITLE}\",
\"title\": \"${TITLE}\",
\"text\": \"${MESSAGE}\"
}]
}" ${SL_WEBHOOKURL} > /dev/null
fi
# Start nginx
/usr/sbin/service nginx start
成功すると、
失敗すると、
成功しても失敗しても赤なのはナンセンスですね。。。