目的と背景
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 をインストール
cd certbot
python setup.py install
cd ..
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
mydomain=example.com
sudo $( which 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
記述追加
参考資料