CloudflareのDNSを利用しているドメインの証明書をcertbotで発行する
概要
Cloudflare の DNS を利用しているドメインの証明書を certbot で発行する。
ワイルドカード証明書を発行する場合、certbot を使い DNS 認証(DNS-01)で DNS レコードを手で修正していたが、Cloudflare の API を利用すれば自動化できる。さらにcertbot-dns-cloudflareというプラグインにより簡単に設定できるので紹介する。
API トークンの取得と設定
Cloudflare のMy ProfileのAPIトークン>トークンを作成する>ゾーン DNS を編集するを選択し API トークンを発行する。
以下は設定例。

発行した API トークンを含むクレデンシャルファイルを適当な場所に作成する。
$ sudo mkdir /etc/letsencrypt/cloudflare
$ sudo vim /etc/letsencrypt/cloudflare/akky.me.ini
dns_cloudflare_api_token=<発行したAPIトークン>
$ sudo chmod 700 /etc/letsencrypt/cloudflare
$ sudo chmod 600 /etc/letsencrypt/cloudflare/akky.me.ini
certbot のインストール
公式の手順に従う。 今回は Web サーバが Nginx,OS が Debian buster なので snap を使ってインストールする手順が表示された。
sudo apt install snapd # snapが入ってなければ
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
プラグインのインストール
certbot-dns-cloudflareプラグインをインストールする。