ACM 証明書の DNS 検証で利用する CNAME 名と CNAME 値は証明書を再作成しても同じになるか教えてください。

2023.02.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

ACM 証明書の DNS 検証を外部 DNS ネームサーバで実施する予定です。ネームサーバへの DNS レコード登録にあたり外部組織への依頼となるため、72 時間以上経ってから CNAME レコードがネームサーバに登録される見込みです。

DNS 検証のセットアップ

CNAME の値を生成してから 72 時間以内に ACM でドメイン名が検証されない場合、ACM では証明書のステータスが [Validation timed out] に変更されます。

72 時間超過後にステータスが [Validation timed out] となっている証明書を削除し、再度同じドメイン名で証明書をリクエストした場合、ネームサーバに登録するレコード情報(CNAME 名と CNAME 値)は削除した証明書と同一のものとなるのでしょうか?
CNAME 名と CNAME 値が同一なら、[Validation timed out]となった証明書を削除した後に同じドメイン名の ACM 証明書を再作成することで、ACM 証明書の DNS 検証を実施する予定です。

結論

ACM 証明書の DNS 検証で利用する CNAME 名と CNAME 値は、ドメイン名とご利用中の AWS アカウントから生成されます。
ACM 証明書を削除した後に再度同じ AWS アカウントにおいて同じドメイン名の ACM 証明書を作成すると、DNS 検証用の CNAME 名と CNAME 値は削除した ACM 証明書のものと同じになります。

AWS Certificate Manager のよくある質問

Q.ACM はどのようにして CNAME レコードを構成しますか?
ACM が生成した CNAME の名称のコンポーネントは、下線文字 (_) と、それに続いて、お使いの AWS アカウントとドメイン名に関連付けられた文字列であるトークンで構成されています。ACM は、ドメイン名の前に下線とトークンを加えて名称コンポーネントを構成します。ACM は、同じく AWS アカウントとドメイン名に関連付けられた別のトークンの前に付加された下線から、ラベルを作成します。

やってみた

ACM 証明書を再作成した場合に DNS 検証で利用する CNAME 名と CNAME 値が削除した証明書と同じになるか、以下の手順で確認してみます。

1 ドメイン名 www.acmcnametest.com に対しての ACM パブリック証明書をリクエスト
2 1.で作成したパブリック証明書を削除
3 ドメイン名 www.acmcnametest.com に対して再度 ACM パブリック証明書をリクエスト
4 再作されたパブリック証明書に設定されている CNAME 名と CNAME 値を確認

ドメイン名 www.acmcnametest.com を指定して ACM 証明書を作成してみた(東京リージョン)

1.ACM 証明書のトップ画面で「証明書をリクエスト」ボタンを押下します

2.パブリック証明書をリクエストを選択して、「次へ」ボタンを押下します

3.完全修飾ドメイン名に www.acmcnametest.com と入力して、他の項目についてはデフォルト設定のまま ACM 証明書をリクエストします

4.ドメイン名 www.acmcnametest.com に対する ACM 証明書を作成できました

ステータスは「保留中の検証」となっています。(利用はできない状態です)
保有しているドメインに対する ACM 証明書のリクエストであることを証明する為には、ドメインで利用している DNS ネームサーバにこのリクエストに対して生成された CNAME 名と CNAME 値を登録する必要があります。
証明書 ID のリンクを押下して、DNS 検証用の CNAME 名と CNAME 値を確認します。

5.次画面(証明書ステータスの詳細)
   ARN、CNAME 名、CNAME 値について、以下のように確認ができました。

ARN arn:aws:acm:ap-northeast-1:************:certificate/9904fa99-3682-4a60-9aac-cd0f51add64c
CNAME 名 _15bd3dc816551dfc3d75ae01df5d46e6.www.acmcnametest.com.
CNAME 値 _7bba3d465f6006d049eef44f2f8c69be.wrpxpmnjfs.acm-validations.aws.

6.ACM 証明書を削除します

7.ACM 証明書の削除に成功しました

同一 AWS アカウントの同一リージョン(東京リージョン)においてドメイン名 www.acmcnametest.com の ACM 証明書を再度リクエストした場合

8.再度同じドメイン名 www.acmcnametest.com でリクエストを作成します

9.新しいリクエストで作成された証明書の ID リンクを押下して CNAME 名と CNAME 値を確認します

再作成した ACM 証明書の ARN、CNAME 名、CNAME 値

ARN arn:aws:acm:ap-northeast-1:************:certificate/1b01a83a-95d1-48cd-bc63-d8261da2ebcd
CNAME 名 _15bd3dc816551dfc3d75ae01df5d46e6.www.acmcnametest.com.
CNAME 値 _7bba3d465f6006d049eef44f2f8c69be.wrpxpmnjfs.acm-validations.aws.

削除した ACM 証明書の ARN、CNAME 名、CNAME 値

ARN arn:aws:acm:ap-northeast-1:************:certificate/9904fa99-3682-4a60-9aac-cd0f51add64c
CNAME 名 _15bd3dc816551dfc3d75ae01df5d46e6.www.acmcnametest.com.
CNAME 値 _7bba3d465f6006d049eef44f2f8c69be.wrpxpmnjfs.acm-validations.aws.

DNS 検証の為に生成された CNAME 名と CNAME 値が、削除した証明書と同じであることを確認できました!

同一 AWS アカウントの他リージョン(バージニア北部)においてドメイン名 www.acmcnametest.com の ACM 証明書をリクエストした場合

他リージョン(バージニア北部)において同じドメイン名の ACM 証明書をリクエストした場合も、DNS 検証で利用する CNAME 名と CNAME 値が同じになるか確認してみます。


バージニア北部リージョンで生成された CNAME 名と CNAME 値 

ARN arn:aws:acm:us-east-1:************:certificate/8e1e4683-9980-4c7e-9271-98bc84363185
CNAME 名 _15bd3dc816551dfc3d75ae01df5d46e6.www.acmcnametest.com.
CNAME 値 _7bba3d465f6006d049eef44f2f8c69be.wrpxpmnjfs.acm-validations.aws.

東京リージョンで生成された CNAME 名と CNAME 値 

ARN arn:aws:acm:ap-northeast-1:************:certificate/1b01a83a-95d1-48cd-bc63-d8261da2ebcd
CNAME 名 _15bd3dc816551dfc3d75ae01df5d46e6.www.acmcnametest.com.
CNAME 値 _7bba3d465f6006d049eef44f2f8c69be.wrpxpmnjfs.acm-validations.aws.

他リージョンにおいて ACM 証明書をリクエストした場合も AWS アカウントが同じなら、生成される CNAME 名と CNAME 値が同じであることを確認できました。

なお、証明書のプライベートキーを暗号化する為に使用される KMS キーが、AWS リージョンおよび AWS アカウントごとに一意であるため ACM パブリック証明書のコピーはできません。
複数の AWS リージョンや AWS アカウントをまたいで同じドメインの ACM 証明書が必要な場合は、同じドメイン名で、リージョン毎、AWS アカウント毎の ACM 証明書を作成してご対応ください。

異なる AWS アカウントにおいてドメイン名 www.acmcnametest.com の ACM 証明書をリクエストをした場合

最後に、異なる AWS アカウントからドメイン名 www.acmcnametest.com に対して ACM 証明書のリクエストをした場合に、DNS 検証で利用する CNAME 名と CNAME 値が異なるものとなっているかを確認します。

DNS 検証で利用する CNAME 名と CNAME 値が AWS アカウントが異なっていても同じだとすると、ドメイン所有者以外からリクエストされた ACM 証明書の DNS 検証も承認されてしまうので、もちろん異なる CNAME 名と CNAME 値が生成されるハズ。

AWS アカウント @@@@@@@@@@@@ で生成された CNAME 名と CNAME 値 

ARN arn:aws:acm:ap-northeast-1:@@@@@@@@@@@@:certificate/2090d863-f7f3-42f3-b5bf-2c6a3a144f77
CNAME 名 _5e974c432a45adb1118421cd34feb031.www.acmcnametest.com.
CNAME 値 _b4e59572420f9375ab82014a6a05802d.wrpxpmnjfs.acm-validations.aws.

AWS アカウント ************ で生成された CNAME 名と CNAME 値 

ARN arn:aws:acm:ap-northeast-1:************:certificate/1b01a83a-95d1-48cd-bc63-d8261da2ebcd
CNAME 名 _15bd3dc816551dfc3d75ae01df5d46e6.www.acmcnametest.com.
CNAME 値 _7bba3d465f6006d049eef44f2f8c69be.wrpxpmnjfs.acm-validations.aws.

異なる AWS アカウントにおいてドメイン名 www.acmcnametest.com に対しての ACM 証明書リクエストをした場合は、異なる CNAME 名と CNAME 値が生成されることを確認できました!

まとめ

わりとよくいただくご質問なので、検証してブログ化してみました。
前職の法人営業時代に、72 時間以内の DNS レコード登録依頼をいただいた記憶があるので、もしかしたら DNS 検証の為の CNAME レコード登録依頼だったのかもしれません。

この記事がどなたかのお役に立てば幸いです。

参考資料