Let’s Encrypt + MyDNS でワイルドカードSSL証明書を自動更新する方法

takahashi 著者:takahashi

Let’s Encrypt + MyDNS でワイルドカードSSL証明書を自動更新する方法

昨日の記事で、無料DDNSサービスであるMyDNSで、手動でDNSの編集をしなくてもワイルドカード証明書を取得・更新できるようになったことをお伝えしました。

今回は実際に自動的にワイルドカード証明書を取得・更新為の設定方法をご紹介したいと思います。

まず前提として、まだMyDNSに登録をしていない方は、先に登録しておく必要があります。

また、MyDNSはDDNSサービスであり、IPアドレスを定期的に書き換えることが前提の仕組みになっています。
そのため、たとえ固定のIPアドレスを取得していたとしても、定期的に向き先のIPアドレスをMyDNSに通知する必要があります。

1週間通知しないと、ドメインIPの正引きが停止し、1か月間通知しないと、アカウントが削除されてしまいますが、IPアドレスの通知はプログラムを使って通知することができるようになっていますので、通知スクリプトをcronなどで定期的に実行することで、手動のメンテナンスなしで利用の継続が可能です。

https://www.mydns.jp/?MENU=030のSTEP4にある要件さえ満たしていればどんな言語やプログラムを使ってもOKなのですが、一から作るのはちょっと面倒なので、インターネット上で有志の方が作成したサンプルコードを利用した方が確実かつ手軽なので、活用することをお勧めします。

アカウントの作成方法とIPの自動更新設定についてはネット上に参考資料が沢山出ているため今回は割愛します。

上記の手順まで完了したら、自動更新スクリプトをサーバーに入れ込んでいきます。

ターミナルを開き、次のコマンドをroot権限で実行します

cd ~ #ホームフォルダなどの作業スペースへ移動
wget 'https://github.com/disco-v8/DirectEdit/archive/master.zip' -O DirectEdit-master.zip #MyDNSの自動更新スクリプトをダウンロード
unzip DirectEdit-master.zip #ダウンロードしたZipを解凍
mv DirectEdit-master /opt/ #解凍したフォルダを/opt/に移動

次に、自動DNS書き換えの設定をしていきます。

vi /opt/DirectEdit-master/txtedit.conf

内容を下記のように書き換えます。

    $MYDNSJP_URL       = 'https://www.mydns.jp/directedit.html'; //そのまま
    $MYDNSJP_MASTERID  = 'mydnsXXXXXX'; //MyDNSユーザーID
    $MYDNSJP_MASTERPWD = 'yourmydnspasswd'; //MyDNSパスワード
    $MYDNSJP_DOMAIN = 'example.com'; //MyDNSに登録したドメイン名

権限を変更します。

cd /opt/DirectEdit-master
chown root:root ./
chmod 700 ./*.php //DNS自動更新プログラム
chmod 600 ./*.conf //設定ファイル

これで下準備はOKです。
それではMyDNS自動更新スクリプトを使ってdns-01認証でワイルドカード証明書を取得してみます。

certbot-auto certonly --manual \ #certbot-autoコマンドは環境によって名前が異なる場合があります。
--preferred-challenges=dns \
--manual-auth-hook /opt/DirectEdit-master/txtregist.php \
--manual-cleanup-hook /opt/DirectEdit-master/txtdelete.php \
-d example.com -d *.example.com \ #※左記以外のサブドメイン(たとえばa.example.com)はMyDNSのスクリプトではエラーになるため指定できません。サブドメインのSSLを取得する場合は別途従来のhttp-01認証で取得してください。
--server https://acme-v02.api.letsencrypt.org/directory \
--agree-tos -m hoge@example.com \ #Let'sEncryptからの通知を受け取るアドレスを指定します。
--manual-public-ip-logging-ok

これでおそらくワイルドカード証明書を取得できたかと思います。
一度上記のコマンドを実行してしまえば、次回以降の更新では

certbot-auto renew #環境によってコマンドが異なります。

コマンドのみを実行すれば更新することができますのでcronなどで定期実行させればサーバーが自動でSSL証明書を更新するようになります。

ワイルドカード証明書を手軽に使ってみたい、という方は是非試してみてください。

  • この記事いいね! (0)

著者について

takahashi

takahashi administrator

Webエンジニア。 趣味で自宅サーバーを稼働中。 ファンタジーが好き。