Contents
https://www.infrastudy.com/?p=820
tinydns on CentOS7でDNS-01使ったLet’s Encrypt証明書の自動更新してみた
# certbot certonly --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --manual-public-ip-logging-ok -d \*.infrastudy.com -d infrastudy.com -m {自分のメールアドレス} --manual-auth-hook=./certbot-tinydns.sh --manual-cleanup-hook=./certbot-cleanup.sh
これがうまくいくと、Let’s Encryptの更新情報定義ファイルにhookスクリプトが登録される
certbot-tinydns.shと名付けてauth-hookスクリプトとして使う。
DOMAIN="_acme-challenge.${CERTBOT_DOMAIN}" VALIDATION=${CERTBOT_VALIDATION} TINYDNS_DATA_FILE=/etc/ndjbdns/data TINYDNS_DATA_CMD=/usr/bin/tinydns-data TINYDNS_ADDR={tinydnsがListenしているIPアドレス} # _acme-challengeホスト文字列を作成 TXT_RECORD="'${DOMAIN}:${VALIDATION}:300" # tinydnsのdataファイルに追記し、cdbファイルを作成する echo ${TXT_RECORD} >> ${TINYDNS_DATA_FILE} $(cd $(dirname ${TINYDNS_DATA_FILE}) && ${TINYDNS_DATA_CMD}) # 10秒待って、名前解決できるか確認。 sleep 10 host -r -t txt ${DOMAIN} ${TINYDNS_ADDR} | grep ${VALIDATION} > /dev/null 2>&1 exit $?
certbot-cleanup.shと名付けてcleanup-hookスクリプトとして使う。
DOMAIN="_acme-challenge.${CERTBOT_DOMAIN}" VALIDATION=${CERTBOT_VALIDATION} TINYDNS_DATA_FILE=/etc/ndjbdns/data TINYDNS_DATA_CMD=/usr/bin/tinydns-data # _acme-challengeホスト文字列を作成 TXT_RECORD="'${DOMAIN}:${VALIDATION}:300" # tinydnsのdataファイルから該当レコードを削除しcdbファイルを作成する sed -i -e "/${TXT_RECORD}/d" ${TINYDNS_DATA_FILE} $(cd $(dirname ${TINYDNS_DATA_FILE}) && ${TINYDNS_DATA_CMD}) exit 0