HTTP-01 での取得は分かりやすいのですが、更新のたびに 80 番を開けておく 必要があります。常時開けているのがなんとなく落ち着かなかったので、 DNS-01 に切り替えました。
名前解決側だけで完結するので、80 番を閉じたままにできて構成が素直になります。 更新も cron から叩くだけで済みます。
certbot certonly --dns-cloudflare \
--dns-cloudflare-credentials /root/.secrets/cf.ini \
-d example.com -d '*.example.com'
HTTP-01 ではワイルドカードが取れません。サブドメインを増やすたびに 個別に取得するのが面倒になってきたので、この点だけでも切り替えた価値がありました。
ただし DNS 側の API 資格情報をサーバに置くことになるので、 ファイルの権限は厳しめにしています。
chmod 600 /root/.secrets/cf.ini
chown root:root /root/.secrets/cf.ini
DNS の反映待ちで失敗することが最初のうちはありました。
プロバイダによっては反映が数十秒かかるので、
--dns-cloudflare-propagation-seconds を少し長めに取ると安定します。
あと、DNSSEC を有効にしている場合は、切り替えのタイミングで しばらく名前解決が不安定になることがあります。深夜にやるのが無難です。