정기적으로 Let's Encrypt 인증서를 업데이트하여 Slack에서 발표
Let's Encrypt
공개 사이트에서는 상시 SSL(AOSSL)의 대응이 필수가 되고 있어,
Let's Encrypt 은 인증서 발급이 무료이며 간단하며 최근 몇 년 동안 인기를 끌고 있습니다.
또한 2018년 1월부터 와일드카드 인증서 발급 개시 있습니다.
Let's Encrypt의 인증서 유효기간은 기본 3개월이며,
certbot이라는 간단한 인증서 발급 클라이언트를 이용합니다.
정기적으로 Let's Encrypt 인증서 업데이트
유효기간이 짧기 때문에, 자신은 cron 설정으로 정기적으로 갱신되도록 해 둡니다.
0 4 1 1,3,5,7,9,11 * root /usr/bin/systemctl stop httpd.service && /usr/bin/certbot renew --force-renew --quiet --post-hook "/usr/bin/systemctl start httpd.service"
정기적으로 Let's Encrypt 인증서를 업데이트하여 Slack에서 발표
그 상황을 Slack에 알리기 위해 다음과 같이 ShellScript로 사용자 정의했습니다.
ShellScript
ssl_certificate_renew.sh
#!/bin/bash
# WebHookのURL
WEBHOOK_URL='https://hooks.slack.com/services/***************************'
# メッセージを一時保存する場所
MESSAGEFILE=$(mktemp -t ssl-certificate-notice-XXXX)
# 送信先のチャンネル
CHANNEL=${CHANNEL:-'#lee_test'}
# 終了時に削除
trap "rm ${MESSAGEFILE}" 0
send_notice_to_slack_renew_start () {
# 見出し
hd=${HEAD:-"start to ssl certificate renew.\n"}
# json形式に整形
payload="payload={
\"channel\": \"${CHANNEL}\",
\"text\": \"${hd}\"
}"
curl -s -S -X POST --data-urlencode "${payload}" ${WEBHOOK_URL} > /dev/null
}
send_notice_to_slack_renew_success () {
# 見出し
hd=${HEAD:-"ssl certificate renew success.\n"}
# 絵文字
emoji=${EMOJI:-':carlton:'}
# json形式に整形
payload="payload={
\"channel\": \"${CHANNEL}\",
\"icon_emoji\": \"${emoji}\",
\"text\": \"${hd}\"
}"
curl -s -S -X POST --data-urlencode "${payload}" ${WEBHOOK_URL} > /dev/null
}
send_notice_to_slack_renew_fail () {
# 改行処理
cat ${MESSAGEFILE} | tr '\n' '\\' | sed 's/\\/\\n/g' > ${MESSAGEFILE}
# 絵文字
emoji=${EMOJI:-':aaw_yeah:'}
# 見出し
hd=${HEAD:-"<!here>ssl certificate renew fail.\n"}
# メッセージをシンタックスハイライト付きで取得
msg='```'`cat ${MESSAGEFILE}`'```'
# json形式に整形
payload="payload={
\"channel\": \"${CHANNEL}\",
\"icon_emoji\": \"${emoji}\",
\"text\": \"${hd}${msg}\"
}"
curl -s -S -X POST --data-urlencode "${payload}" ${WEBHOOK_URL} > /dev/null
}
send_notice_to_slack_renew_start
/usr/bin/systemctl stop httpd.service
/usr/bin/certbot renew --force-renew --quiet 2> ${MESSAGEFILE}
RENEW_RESULT=$?
/usr/bin/systemctl start httpd.service
if [ ${RENEW_RESULT} -eq 0 ]; then
send_notice_to_slack_renew_success
else
send_notice_to_slack_renew_fail
fi
그리고 ShellScript를 정기적으로 호출합니다.
cron
0 4 1 1,3,5,7,9,11 * root /bin/sh /run/ssl_certificate_renew.sh
결과
인증서 갱신 성공
인증서 갱신 실패
감사합니다.
Reference
이 문제에 관하여(정기적으로 Let's Encrypt 인증서를 업데이트하여 Slack에서 발표), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/leedohyung-dba/items/947185ab37818b66bacd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)