それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

certbotの更新でCloudflareプラグインを使ってDNSの認証を楽にする

目的と背景

certbotワイルドカードについて

2018 年からCertbotワイルドカード発行が可能になっている。

ワイルドカードを使うことで、サブドメインをまるっとTLS化できて便利。

ワイルドカードの証明書の作り方

ワイルドカードのやりかたは以前書きました。 http://takuya-1st.hatenablog.jp/entry/2018/10/25/163040

前回、作成した証明書から90日くらい経過して、更新が必要になったので、さらなる進化を目指します。

今回やること:DNSのTXT認証の省力化

ワイルドカード証明書の発行には、TXTレコードの書き換えが必要です。

これを各API経由で自動化することができます。

準備するもの

今回は、これに加えDebianのAPTのCertbotと競合しないようにVirtualEnvを使うことにしました。

準備

最新版のCertbotを持ってきます。

git clone https://github.com/certbot/certbot
cd certbot

virtualenv 環境に入ります。

virtualenv certbot-test
source ./certbot-test/bin/activate

もしvirtualenv がない場合は pip でインストールします。 pip install --upgrade pip && pip install virtualenv

わたしは pyenv 環境で作っているのでpyenv コマンドとvirtualenvを使っています。

acme をインストール

cd acme
python setup.py install
cd ..

certbot をインストール

python setup.py install

dns プラグインをインストール。今回は cloudflare を採用します。

cd certbot-dns-cloudflare
python setup.py install
cd ..

これで、Certbot側の準備は終了です。

api キーを用意します。

Cloudflareにログインし、プロフィールを表示、Global API Key を閲覧しコピーします。

api キーを保存しました。

/etc/letsencrypt/cloudflareapi.cfg

dns_cloudflare_email =  takuya**************@gmail.com
dns_cloudflare_api_key = *********************

キーが不用意に閲覧されなようパーミッションを設定しておきます。

sudo chmod 600 /etc/letsencrypt/cloudflareapi.cfg

これで、APIとキーの準備は終わりです。

起動テストを行います。

mydomain=example.com
sudo /home/takuya/certbot/certbot-test/bin/certbot  \
  certonly \
 -n --dry-run \
 --cert-name $mydomain \
 --dns-cloudflare \
 --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg \
 --server https://acme-v02.api.letsencrypt.org/directory \
  -d "*.$mydomain"  \
  -d $mydomain

Certbot を使ってワイルドカード証明書を発行します。

mydomain=example.com
sudo /home/takuya/certbot/certbot-test/bin/certbot  \
  certonly \
  --cert-name $mydomain \
  --dns-cloudflare --dns-cloudflare-credentials /etc/letsencrypt/cloudflareapi.cfg \
  --server https://acme-v02.api.letsencrypt.org/directory \
   -d "*.$mydomain" \
   -d $mydomain

最後にWEBサーバーを再起動して終了です

sudo service nginx restart

複数枚を作るときは

次回以降は次のようにすると早いですね

cd ~/certbot
git pull
virtualenv certbot-test
source ./certbot-test/bin/activate
suod ./certbot-test/bin/certbot certonly 

まとめ

ワイルドカード証明書は管理コストが減って便利。

ワイルドカード証明書

こんかいは、Virtualenvを使ったのでsystemd に登録される自動更新のプログラムが使えないので、数ヶ月ごとに手作業で実行する必要はある。

この辺はそのうちAptレポジトリに含まれるCertbotが更新されるであろうから大丈夫だと思う。

ワイルドカードの証明書を使うのもいいけど、自動更新もあるわけだしランダムなドメイン名を無数に使わないなら、ワイルドカードは使わないで、Certbot-autoで自動更新のほうがいいかもしれない。

複数のドメインの証明書を1枚にすると同時にワイルドカードもまとめられたら嬉しい。試してみたい。

2019-03-27

記述追加

参考資料