CertbotによるLet’s Encryptの自動更新

自分で運用しているDNSサーバを使ってCertbotによるLet’s Encryptの証明書の自動更新を行う。 下記のcertbot-renew.shを1日に1回など定期的に実行する。deploy-hookは使ってるhttpdをリロードするコマンドを入れる。

1
2
3
#!/bin/sh

/usr/bin/certbot renew --preferred-challenges dns-01 --manual-auth-hook /root/bin/auth-hook.sh --manual-cleanup-hook /root/bin/clean-hook.sh --deploy-hook "systemctl reload apache2"

auth-hook.sh: DNSサーバにTXTレコードを仕込むシェルスクリプト

1
2
3
4
5
#!/bin/sh

echo "_acme-challenge.${CERTBOT_DOMAIN}. IN TXT \"${CERTBOT_VALIDATION}\"" | ssh dns "cat >>/etc/bind/mkashi.com.zone"
ssh dns systemctl restart bind9
ssh dns cat /etc/bind/mkashi.com.zone

clean-hook.sh: DNSサーバからTXTレコードを削除するスクリプト

1
2
3
4
5
#!/bin/sh

ssh dns "sed -i -e '/_acme-challenge.${CERTBOT_DOMAIN}. IN TXT \"${CERTBOT_VALIDATION}\"/d' /etc/bind/mkashi.com.zone"
ssh dns systemctl restart bind9
ssh dns cat /etc/bind/mkashi.com.zone
Licensed under CC BY-NC-SA 4.0
Hugo で構築されています。
テーマ StackJimmy によって設計されています。