8
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Let's EncryptのDNS-01チャレンジでのSSL証明書更新(手動)

概要

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が公開されているので、自動化は実現できそうである。

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
8
Help us understand the problem. What are the problem?