Help us understand the problem. What is going on with this article?

Let's Encrypt で DNS-01を利用したSSL証明書の取得方法

More than 3 years have passed since last update.

DNS-01 方式

Let’s EncryptでSSL証明書を取得する方法で、WEBサーバが1つのみ稼働させている時はHTTP-01方式として沢山紹介されています。
負荷分散させている場合などでは、ドメイン確認が出来ません。
そこで、Let’s Encryptでは、ドメイン認証方式による確認方法として、DNS−01方式が用意されています。

Let’s EncryptのAutomatic Certificate Management Environment(ACME)の仕様には、ドメイン認証方式(DNS-01)がありますので、詳しい仕様についてはサイトを確認して下さい。

ここでは、サクッと認証とSSL証明書の生成方法だけを説明します。
※ ApacheやNginxなどのSSL証明書の設定方法は割愛してます。

インストール&セットアップ

現時点で、DNS-01方式のスクリプトが、公式で用意されていませんので、
クライアントはサードパーティ製のletsencrypt.shを使用します。
以下のgitより取得して下さい。
以降、letsencrypt.shディレクトリにて作業します

git clone  https://github.com/lukas2511/letsencrypt.sh
cd letsencrypt.sh

DNS認証では、Hookスクリプトでトークン認証を行います。
サンプルはdocs/examples/hook.shとして、Hookスクリプトが用意されていますのでコピーします。

cp -pr docs/examples/hook.sh .

以下の通り、deploy_challengeメソッド部分を修正します。

vi hook.sh

function deploy_challenge {
    local DOMAIN="${1}" TOKEN_FILENAME="${2}" TOKEN_VALUE="${3}"

    echo "Set TXT record of _acme-challenge.$DOMAIN to $TOKEN_VALUE"
    read
}

証明書取得

letsencrypt.shを実行します。
hookスクリプトにより、readの箇所で停止し、認証用のトークンが表示されます。

./letsencrypt.sh -c -d hogehoge.com --challenge dns-01 -k ./hook.sh

Set TXT record of _acme-challenge.hogehoge.com to PMulhL3LmSiTgd00xORGZUNknemC0zPFWew7ToqcKm4

表示されたトークンを、TXTレコードとして、DNSに設定します。
上記の例では、 _acme-challenge.hogehoge.comをTXTキーとして、PMulhL3LmSiTgd00xORGZUNknemC0zPFWew7ToqcKm4を値に設定します。

DNS設定後は、反映にある程度時間が掛かると思いますので、1時間程度待つ必要があるでしょう。
その間、シェルのWindowを閉じないようにして下さい。
再度実行するとトークンが変更されますので、DNSレコードも再設定が必要です。

ある程度待ったら、Enterキーで実行を続け、以下の通り成功すればOKです。

 + Responding to challenge for kosokubus.ex-xyz.xyz...
 + Challenge is valid!
 + Requesting certificate...
 + Checking certificate...
 + Done!
 + Creating fullchain.pem...
 + Done!

成功すると、以下のディレクトリに認証キーなどが生成されます。
letsencrypt.sh/certs/hogehoge.com/

概ね、利用するのは、次のファイルです。

lrwxrwxrwx 1 root root   19 Aug  4 07:16 cert.csr -> cert-1470260375.csr
lrwxrwxrwx 1 root root   19 Aug  4 07:16 cert.pem -> cert-1470260375.pem
lrwxrwxrwx 1 root root   20 Aug  4 07:16 chain.pem -> chain-1470260375.pem
lrwxrwxrwx 1 root root   24 Aug  4 07:16 fullchain.pem -> fullchain-1470260375.pem
lrwxrwxrwx 1 root root   22 Aug  4 07:16 privkey.pem -> privkey-1470260375.pem

ここまで取得できれば、あとは各WEBサーバにファイルをコピーするなり、rsyncするなり好きに料理しましょう。

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした