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


CategoryDns CategoryWatch CategoryTemplate

MoinQ: Letsencrypt/certbot/renew/cron実行/tiny-hook (last edited 2022-02-16 11:01:43 by ToshinoriMaeno)