ConoHa VPSのKUSANAGIにワイルドカードSSL証明書を設定 の記事で設定したlet's encryptによるワイルドカードSSL証明書を、スクリプトを記述することによって自動更新を行います。
cronでcertbotを実行させ、SSL証明書を自動更新
certbot公式ドキュメントに下記記述があります。ワイルドカードSSL証明書は Manual によるオプションでDNSチャレンジを通してのみ作成できるので、下記のようにmanualの箇所を参照します。
Renewal with the manual plugin Certificates created using --manual do not support automatic renewal unless combined with an authentication hook script via --manual-auth-hook to automatically set up the required HTTP and/or TXT challenges. If you can use one of the other plugins which support autorenewal to create your certificate, doing so is highly recommended. To manually renew a certificate using --manual without hooks, repeat the same certbot --manual command you used to create the certificate originally. As this will require you to copy and paste new HTTP files or DNS TXT records, the command cannot be automated with a cron job.
著者訳: —manualオプションを利用して作成されたSSL証明書は、HTTP・TXTチャレンジを自動化するためのオプション —manual-auth-hookと併せて実行しない限り、自動的に更新させることはできません。
自動更新をサポートするプラグインを利用できる環境であれば、プラグインを利用しての更新を強くおすすめします。
hookを利用せずに—manualオプションで証明書を更新させる場合、最初にSSL証明書を作成するときに行った certbot —manual コマンドと同じコマンドで、再度操作を行ってください。 この操作では(作成時と同様に)HTTPファイルまたはDNS上のTXTレコードにコピー&ペーストによる書き換えが必要なため、—manualを用いたコマンドをcronのジョブで自動化させることはできません。
(翻訳以上)
つまり、ワイルドカードSSL証明書の更新を自動化させたいなら、フックを利用してチャレンジを自動化させる必要があるとのこと。
certbot公式ドキュメント: Manual のRenewal with the manual pluginの
フックについては Pre and Post Validation Hooks に記述があります。ここで、フックを利用してTXTレコードを書き換えたい場合、書き換えに対応しているサーバー側のAPIが必要となりますので注意が必要です。
言い換えると、DNSを書き換えるためのAPIを公開していないサーバーの場合には、ワイルドカードSSL証明書の自動更新を設定することはできません。
なお、ConoHa VPSはAPIを公開しています。
ワイルドカードSSLの自動更新の方法については、下記記事の方法にしたがってください。
Let’s Encrypt ワイルドカード自動更新(ConoHa) – eastforest
上記ブログ管理者様がGitHubでスクリプトを公開されています。