LoginSignup
13
15

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-04-12

概要

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

13
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
15