|
| ||||||||
|
巻き戻し中。
|
|
2018-06-05(火) 証明書の更新 [長年日記]
_ 自動更新
Let'sEncryptのDNS-01のワイルドカード証明書を自動更新するのに必要なプラグイン(ローカルのbind用)でけた。
-----------------------こんなのから呼び出す----------------------
#!/bin/sh
/usr/local/bin/certbot certonly -n \
-d \*.[ドメイン] \
-m [ワシのメアド] \
--agree-tos \
--manual-public-ip-logging-ok \
--manual \
--preferred-challenges dns-01 \
--server https://acme-v02.api.letsencrypt.org/directory \
--manual-auth-hook [呼ばれるプラグインを指定] \
--manual-cleanup-hook [事後処理スクリプトを指定]
-------------------auth-hookで呼ばれる方----------------------
#!/bin/sh
NAMEDFILE=/etc/namedb/[ドメイン名のファイルだよね]
RESTART=[named再起動のコマンド、DNSSECとかやってるとサインし直し要注意]
ACME_RECORD="ゾーンファイル内で「_acme-challenge.[なんとか]」になっていたレコードのホスト名部分"
KEYLENGTH=44
CAT=/bin/cat
AWK=/usr/bin/awk
SED=/usr/bin/sed
GREP=/usr/bin/grep
DIFF=/usr/bin/diff
WC=/usr/bin/wc
KEY=`echo $CERTBOT_VALIDATION`
DOMAIN=`echo $CERTBOT_DOMAIN`
echo "VALIDATION KEY is "$KEY
if [ ! -f $NAMEDFILE ];then
echo "file "$NAMEDFILE" not found"
exit 3
fi
#################################################
# incriment the serial
#################################################
SERIAL=`$AWK 'NR == 3 {print $1}' $NAMEDFILE`
NEW_SERIAL=`expr $SERIAL + 1`
#################################################
# replace the key
#################################################
OLDKEY=`$GREP $ACME_RECORD $NAMEDFILE|$AWK '{print $4}'`
#################################################
# Do it
#################################################
$CAT $NAMEDFILE |$SED -e s/$SERIAL/$NEW_SERIAL/g|$SED -e s/$OLDKEY/\"$KEY\"/g \
> $NAMEDFILE.new
$DIFF -p $NAMEDFILE $NAMEDFILE.new > $NAMEDFILE.DNS-01.diff
$CAT $NAMEDFILE.DNS-01.diff
cp -p $NAMEDFILE $NAMEDFILE.prev
cp $NAMEDFILE.new $NAMEDFILE
#################################################
# Restart named
#################################################
$RESTART
STATUS=`echo $?`
if [ "$STATUS" != "0" ];then
echo "the named restart with "$RESTART" failed."
exit 4
fi
echo "Key set and restart done!"
echo "sleeping 90sec"
sleep 90
echo "done!"
exit 0
出来合いだとISPやクラウドDNSのプラグインは沢山あるけど案外ベタにbindかつファイルでやるのが見つからない。
認証用のキーもプラグインには引数で渡されるのかと思いきや、環境変数で渡されたり、結構面白い。
Tweets by RC31E | |||||||||
| |||||||||
|