はじめに
Let’s Encrypt で1枚の証明書で、*.test.example.com と *.subtest.test.example.com といった、ワイルドカード・サブドメインのワイルドカードを取得する方法です。
*.test.example.com のみといった、単体のワイルドカードでいい場合は、次の記事を参照してください。
Let’s Encryptでワイルドカード証明書の取得方法 – パソコン鳥のブログ
なお、前提条件として、ドメインの所有者としてDNSサーバを管理していることが必要です。
ワイルドカード証明書を自動で取得する仕組み(ACME)として、DNS-01 チャレンジを利用しますが、これには、ドメイン名の TXT レコードに特定の値を設定できることが必要だからです。
また、この設定を、certbot実行の際に自動的にできるように、Dynamic Update 機能を利用します。(このためのDNSサーバの設定方法は、本記事で説明しています)
本記事では例として、CentOS+bindで、ドメイン test.example.com の所有者の場合に、ワイルドカード証明書(*.test.example.com)と、サブドメインのワイルドカード証明書(*.subtest.test.example.com)を1枚で取得する方法を説明します。
以下の説明では、test.example.com 、subtest.test.example.com の箇所を、適宜みなさんのドメイン名に置きかえてください。
certbot インストール
Let’s Encryptでワイルドカード証明書の取得方法 の次の箇所の作業を実施してください。
・certbot インストール
Dynamic Update用の認証情報ファイルの用意
Let’s Encryptでワイルドカード証明書の取得方法 の次の箇所の作業を実施してください。
・Dynamic Update用の認証情報ファイルの用意
bindの設定
Let’s Encryptでワイルドカード証明書の取得方法 の次の箇所の作業を実施してください
・bindの設定
ここまでで、ワイルドカード(*.test.example.com)用の設定ができました。
続けて、サブドメインのワイルドカード(*.subtest.test.example.com)用の作業を実施します。
以降の説明では、subtest.test.example.comと ns.test.example.com の箇所を、適宜みなさんのドメイン名・ネームサーバに置きかえてください。
次の内容で、ファイル /var/named/chroot/var/named/dynamic/_acme-challenge.subtest.test.example.com.zone を作成します。
$TTL 600
@ IN SOA subtest.test.example.com. root.subtest.test.example.com. (
2023051501 ; Serial
1h ; Reflesh
15m ; Retry
30d ; Expire
1h ; Neg. cache TTL
)
IN NS ns.test.example.com.
このファイルは、bindからも書き込みできるように、権限を設定しておきます。
(CentOS では bind のユーザは named なので、下記では named に書き込み権限を与えています)
chown root:named /var/named/chroot/var/named/dynamic/_acme-challenge.subtest.test.example.com.zone
chmod 775 /var/named/chroot/var/named/dynamic/_acme-challenge.subtest.test.example.com.zone
test.example.com の zoneファイルの末尾に次の内容を追加します。
_acme-challenge.subtest IN NS ns.test.example.com.
named.conf内の test.example.com の zone設定箇所に続けて、次を追加してください。
zone "_acme-challenge.subtest.test.example.com" {
type master;
file "/var/named/dynamic/_acme-challenge.subtest.test.example.com.zone";
check-names ignore;
update-policy {
grant certbot-key. name _acme-challenge.subtest.test.example.com. TXT;
};
};
設定を反映させます。
systemctl restart named-chroot
テスト
ここまでの設定で問題ないかのテストを行います。
次を実行してください。
certbot certonly --dry-run --dns-rfc2136 --dns-rfc2136-credentials /var/named/chroot/etc/certbot/dns-rfc2136.ini -d '*.test.example.com' -d '*.subtest.test.example.com'
問題無い場合は、出力の最後に
The dry run was successful.
と表示されます。
certbot実行
ACOEアカウントの作成
Let’s Encryptでワイルドカード証明書の取得方法 の次の箇所の作業を実施してください
・ACOEアカウントの作成
certbot実行でSSL証明書取得
以上で必要な設定は完了しました。
次を実行すると、証明書を取得できます。
/etc/letsencrypt/live/test.example.com/ 下に証明書が作られます。
-d でドメインを複数指定します。ここでは、*.test.example.com と *.subtest.test.example.com を指定しています。なお、一番最初のものがSSL証明書の CN フィールドにセットされます。
certbot certonly --dns-rfc2136 --dns-rfc2136-credentials /var/named/chroot/etc/certbot/dns-rfc2136.ini -d '*.test.example.com' -d '*.subtest.test.example.com'
運用
Let’s Encrypt の証明書の有効期間は90日間なので、その期間が来る前に更新してください。
更新は次のコマンドを実行してください。
/usr/bin/certbot renew
コメント