更新情報(2022/7/25)
コメントで別の方法を教えて頂いたため、解決方法を1と2に分けました(2が追加した解決法)。
それぞれにメリットがあると思うのでお好きな方を選んでください。
環境
- 取得ドメイン元: お名前.com
- DNS: Route53
- サブドメイン: 元ドメインのホストゾーンにサブドメイン用のAレコードを追加
やりたかったこと
- 以下のような2階層のサブドメインに対応したSSL証明書を1枚で発行したかった。
example.com
api.example.com
stage.example.com
api.stage.example.com
上記を達成するために*.*.exmaple.com
をACMに登録しようとしましたが、AWSさんに怒られます。
公式ドキュメントにもこのような要件への対応は不可能みたいなことが書かれていますね。
残念ですが、ACMでは「SSLに対してアスタリスクを2つ付けるのは不可能」のようです。
ただし、「1階層目のサブドメインを個別で指定してあげる方法」であれば解決できます。
そこで以下に2つの解決方法を掲載します。
解決法1: exmaple.com
とstage.example.com
の2つの証明書をそれぞれ取得
元ドメインのexmaple.com
とサブドメインのstage.example.com
の2つの証明書を別個で取得する方法です。
上記写真のように、証明書ごとに元ドメインexmaple.com
とワイルドカード*.example.com
の2つを追加して上げてください。
これで最初に上げた4つのドメインに対応できるようになります!
ただし、この方法は以下のようにRoute 53ホストゾーンをそれぞれ用意してあげる必要があります。
-
exmaple.com
のホストゾーン -
stage.expamle.com
のホストゾーン
仮にサブドメインのホストゾーンが存在しない状態でサブドメイン用の証明書をACMで登録しようとしても、ドメイン状態が一生検証保留中
になって証明書が作れません。
そこで、Route 53でサブドメイン用のホストゾーンを作成
して権限を委任します。
やり方は上記のクラスメソッドさんの記事がわかりやすくておすすめです。
これで問題なく最初の4つのドメインに対応できると思います。
元ドメインのホストゾーンにサブドメインのAレコードを作っていた場合は削除を忘れないようにしてください!
この方法のデメリットは、サブドメインが増えるごとにホストゾーンを追加する必要があるので、そのたびにコストがかかります(1ホストゾーン/0.5ドル)
そこで本来やりたかった1枚で済ませる方法を次に紹介します。
解決法2: 1つのACM証明書内に必要なサブドメインをすべて記述する
こちらはコメントで教えていただいた方法です。
必要とされるサブドメインをACM作成時にすべて登録する、これだけです。
今回網羅したいドメインであれば以下のようにドメイン名を登録します。
expamle.com
*.example.com
*.stage.example.com
この方法ならホストゾーンは元ドメイン(example.com
)の一つだけでOKです(サブドメイン含めた4つのCNAMEが1つのホストゾーンに集約されます)。
これなら費用も全くかからないですし何よりシンプルでわかりやすいですね。
デメリットは「後からACM証明書にドメインを追加できない」ので、サブドメインを追加したい場合はACM証明書を作り直す必要があることです。
まとめ
「サブドメイン追加のたびに証明書を作り直したくない、サブドメインごとに証明書を管理したい場合」は解決法1を、
「コストを極限まで抑えたい、証明書を一つにまとめて管理を楽にしたい場合」は解決法2を選ぶといいと思います。