## page was copied from DnsTemplate ##master-page:HelpTemplate <> <> 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スクリプトとして使う。 {{{ #!/bin/bash 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スクリプトとして使う。 {{{ #!/bin/bash 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 }}} ---- CategoryDns CategoryWatch CategoryTemplate