20
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-08-04

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するなり好きに料理しましょう。

20
14
1

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
20
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?