Let’s EncryptでDNSを使って証明書を取得する

目次

概要

Let’s Encryptは、WebサーバでHTTPS通信をする際に使うことが多いと思います。

しかし、SSL証明書は必ずしもWebサーバのみで使われるわけではありません。

そのため、証明書を取得するためだけにWebサーバを起動している人もいるかもしれませんが、今ではWebサーバを使わずにDNSを使ってLet’s Encryptの証明書を取得する方法があります。

ここでは、DNSを使った証明書の取得方法を紹介します。

方法

まず、Let’s Encryptを使うための実行ファイルをダウンロードして配置します。

sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto

apt-getやyumで手に入るものでは、DNSでの認証ができない場合があるので、ダウンロードしてきた方がいいです。

次のコマンドで認証を開始します。

certbot-auto certonly --manual --preferred-challenges dns --domain example.com

example.comのところは、適切な値に書き換えてください。

コマンドを実行すると、利用規約の同意などを求められるので、同意できるのであれば適当な入力をして進めてください。

進めていくと、次のように表示されます。

Please deploy a DNS TXT record under the name

_acme-challenge.example.com with the following value:


Before continuing, verify the record is deployed.

——————————————————————————

Press Enter to Continue

_acme-challenge.example.comという部分と*************************************の部分があります。*************************************は、セキュリティのために伏せています。

これは、_acme-challenge.example.comにTXTレコードとして*************************************を設定しなさいということを表しています。

なので、DNSを変更しましょう。

DNSの変更が終わったら、dig _acme-challenge.example.com txtコマンドなどでDNSが反映されたことを確認したら、エンターキーを押して認証を進めましょう。

もし失敗したら、もう一度やり直しましょう。

成功したら、/etc/letsencrypt/live/以下のドメイン名のディレクトリに証明書があるはずです。

さいごに

DNSでも証明書が取得できるのであれば、ロードバランサに証明書を配置したいような場合でも、わざわざロードバランサを止めたりすることなくできるので便利です。

積極的に使用したいです。