Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
OrganizationEventAdvent CalendarQiitadon (β)
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

certbot+certbot-dns-cloudflare でワイルドカード証明書を取得&自動更新する

1. certbot をインストール

CentOS 7 なら epel にワイルドカード証明書対応版 (v0.22) があるので、それをインストールする。

yum install --enablerepo=epel certbot

2. certbot-dns-cloudflare プラグインをインストール

ワイルドカード証明書の発行、更新には DNS の TXT レコードを編集する必要がある。
DNS 操作を自動化するため、 certbot-dns-cloudflare プラグインを導入する。

yum install --enablerepo=epel python2-certbot-dns-cloudflare

Global API Keyhttps://www.cloudflare.com/a/profile から取得し、それを記した credentials ファイルを作成する。
ここでは /root/.cloudflare/credentials に作成するものとする。

mkdir /root/.cloudflare
chmod 700 /root/.cloudflare
echo "dns_cloudflare_email = {ログインメールアドレス}" > /root/.cloudflare/credentials
echo "dns_cloudflare_api_key = {取得した API キー}" >> /root/.cloudflare/credentials
chmod 600 /root/.cloudflare/credentials

3. 証明書を取得する

example.com*.example.com の証明書を取得する場合、以下のようなコマンドになる。

certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /root/.cloudflare/credentials \
  --dns-cloudflare-propagation-seconds 60 \
  --server https://acme-v02.api.letsencrypt.org/directory \
  -d example.com \
  -d *.example.com

DNS の変更が反映されるのを待つため、 60 秒 (--dns-cloudflare-propagation-seconds) ほど掛かる。

取得が完了すると、 /etc/letsencrypt/live/example.com 以下に秘密鍵と証明書が出力されている。

4. 証明書を更新する

certbot renew

/etc/letsencrypt/renewal/{ドメイン名}.conf に取得時の設定が残されているため、更新時にオプションを指定する必要はない。

付記. cron 設定例

echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" > /etc/cron.d/certbot
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Help us understand the problem. What are the problem?