概要
2020/4/12現在、Let's Encryptでワイルドカード証明書を発行するためには、よくネットで見られるHTTP-01チャレンジでなくDNS-01チャレンジを用いて証明書を発行する必要がある。
本稿では、n番煎じではあるが、DNS-01での更新方法を記す。
環境
- ドメインとDNSサーバはfreenomを使用
- 証明書が対象とするドメインは、*.example.comとexample.com
手順
まず、certbotの実行と、そのチャレンジのレコードへの追加を行う。
sudo certbot certonly --manual \
--server https://acme-v02.api.letsencrypt.org/directory \
--preferred-challenges dns \
-d *.example.com -d example.com \
-m webmaster@example.com \
--agree-tos \
--manual-public-ip-logging-ok
上記コマンドを実行すると、下記のメッセージが表示される。
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(ランダムな文字列)
Before continuing, verify the record is deployed.
ここで、DNSレコードの編集画面に行き、上記のランダムな文字列をレコードに追加する。
Name | Type | TTL | Target |
---|---|---|---|
_acme-challenge | TXT | 3600 | xxxxx(上記のランダムな文字列) |
のように登録する。
反映まで時間がかかるので、お茶を入れるなりして5分ほど待つ。
しばらく経過したら、digコマンドでDNSレコードを確認する。
dig @80.80.80.80 -t TXT _acme-challenge.example.com
@の後ろのIPアドレスは、使っているDNSサーバのアドレスにする。
コマンドの結果のANSWER SECTIONに先ほど登録したレコードが表示されていれば、certbot
でEnterを押下し、次へ進む。
Enterを押すと、再度DNSレコードに文字列を登録するよう指示されるので、再度同じように実行する。
最後にCongratulations! Your certificate and chain have been saved at
が表示されれば、無事証明書の更新が完了となる。
自動化
DNSサーバでAPIが用意されていれば、この更新作業は自動化できそうである。
さくらインターネットでは、自動化の方法が紹介されていた(参考)。
freenomでもAPIが公開されているので、自動化は実現できそうである。