はじめに
Let’s Encrypt の証明書ツールである Certbot は、HTTP / DNS /TLS のいずれかの方法で認証を行う構造となっています。
https://letsencrypt.org/ja/docs/challenge-types/
通常は HTTP が最も簡便ではありますが、ワイルドカード証明書を取得したい場合や、HTTP サーバーを使用できない環境では DNS を使用する必要があります。
しかしながら、DNS の方法はデフォルトでは自動更新ができません。
なぜなら、DNS サーバーに定期的に認証用のレコードを書き込む・更新する必要があり、certbot から DNS の管理UIにアクセスできないためです。
そのため、certbot には様々な DNS サービスから認証を容易にするプラグインが提供されています。
今回、Cloudfrare のプラグインで自動更新を試みてみました。
手順
Cloudfrare 側の作業
Cloudfrareにログイン
まずはCloudfrareにログインします。
Just a moment...
右上のアイコン→プロフィール

APIトークン → トークンを作成する

ゾーンDNSを編集するテンプレートを選択

ゾーンリソースを指定
セキュリティ対策として、すべてのゾーンではなく、指定ゾーンのみを指定しておきます。

トークンを作成

トークンをコピー
トークンが作成されたらトークンをコピーしてメモしておきます。

サーバー側の作業
サーバー側で以下のコマンドを実行します。
ドメインやAPIトークンなどは適宜書き換えてください。
トークンファイルの作成
sudo mkdir -p /root/.cloudflare
sudo touch /root/.cloudflare/example.com.ini
echo 'dns_cloudflare_api_token=[APIトークン]' | sudo tee /root/.cloudflare/example.com.ini
sudo chmod 700 /root/.cloudflare
sudo chmod 600 /root/.cloudflare/example.com.ini
証明書の更新
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /root/.cloudflare/example.com.ini \
-d dns.example.com \
-m [自分のメールアドレス] \
--agree-tos \
--non-interactive
エラーが無ければOKです。
参考資料
certbotプラグインに対応しているリストは以下のページに掲載されています。
日本企業だとConoHaなどが対応しています。

DNS providers who easily integrate with Let's Encrypt DNS validation
In the spirit of Web Hosting who support Let's Encrypt and CDN Providers who support Let's Encrypt, I wanted to compile ...
コメント