CNAMEレコードとは?
CNAMEレコードとは、DNSで定義されるそのドメインについての情報の種類の一つで、あるドメイン名やホスト名の別名を定義するもの。別名は「エイリアス」(alias)と呼ばれる。
https://e-words.jp/w/CNAME%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89.html より
例えば、hoge.example.comにアクセスした場合、ドメインのDNS設定でCNAMEレコードにexample.comが設定されている場合、クライアントに対してexample.comを返却する。
この時、通常はhoge.example.comのホストゾーンにはAレコードが存在しない。
なぜなら、Aレコードが示すIPアドレスを返却すべきか、CNAMEレコードが指しているドメイン(example.com)を返却すべきか、わからなくなるからだ。
ACMのDNS検証
ところが、ACMのDNS検証ではhoge.example.comに対してAレコードもCNAMEレコードもどちらも設定する。
ただし、この場合通常のクライアントに対してはAレコードが示すIPアドレスが返却される。
CNAMEはいつ使われるのかというと、AWSが所有権検証を行う際に使用されるのである。
検証方法
ACMでDNS検証を選択した場合、AWSから当該のドメインのCNAMEレコードに対して、設定すべきCNAME NAMEとCNAME VALUEが送られる。
これを当該のドメインで設定することでAWSはドメインの所有権を検証し、ACMを発行することになる。
CNAMEレコードにマッピングされているCNAME NAMEとCNAME VALUEの組み合わせが、想定されているものかどうかを判断する、という方法で検証を行う。
IDとパスワードの関係に近い気がする。(というかそれそのもの?)
これがきちんと設定されていないと、ACMの自動更新が行えない。
感想
DNSもちゃんと理解できてないのに、特殊なCNAMEの使いかたをしていて混乱した。
DNS難しいからもっとちゃんと理解したい。