テックメモ

技術的に気になったことをメモしていきます

ACMでDNSによるドメイン検証が可能になりました(自動更新が個人的に楽になった)

はじめに

AWSACMに関する以下のリリースを発表しました。

https://aws.amazon.com/jp/about-aws/whats-new/2017/11/aws-certificate-manager-easier-certificate-validation-using-dnsaws.amazon.com

今まで、ACMドメイン検証をする場合は、メール受信による検証だけだったのですが、これにDNSレコードの登録(CNAMEレコード)による検証が加わりました。

正直、今まではこれだけのためにメール受信環境を構築することもあり、TerraformとかCloud Formation等でテンプレ化をしていても面倒だったのでかなり嬉しいリリースです。

DNSレコード検証の自動更新プロセスについて詳細な内容にアップデートをしました (1/22)

何が嬉しいか

メールの受信環境を構築しなくて良いのは楽ですね。

また、DNSレコード検証専用の自動更新プロセスも誕生しました。

実は私はこちらの自動更新プロセスの方が嬉しいです。
メール検証の場合、証明書の自動更新の際に以下のプロセスが発生していました。

  1. ACMから対象ドメインの対してHTTPSの接続要求による検証を行う
  2. HTTPSの接続が確認できなかった場合はドメインオーナーに対して確認用Eメールを送付する

ACMからの接続による検証が通ると勝手に更新されていて、ACM最高だわ!となるのですが、そもそもSGなどで接続を制限している環境で運用をしていると、更新時にメール検証の一手間が発生してしまい、あー。ってなっていました。

では、DNSレコード検証ではどのようなプロセスとなるのか。

DNS を使用したドメインの所有権の検証 - AWS Certificate Manager

証明書は使用中で CNAME レコードが残っている状態であれば、証明書は ACM によって自動的に更新されます。

とあります。つまり以下の2点をクリアできれば自動的に更新されます。

  1. CNAMEレコードによる検証を行う
  2. 証明書が使用中であるか検証を行う

また「証明書が使用中」であることは以下のいずれかで確認可能です。

  • コンソールで確認したときに「使用中?」が「はい」になっている
  • describe-certificate コマンド InUseBy に何かしらのARNが存在する

上記で検証が失敗した場合はAWS Accountに対して確認用Eメールが送付されます。

Eメール認証で取得した証明書からドメイン認証へ乗り換える方法

これはよくある質問に答えが載っていました。

既存の証明書を E メールでの検証から DNS での検証に変更できますか?
できません。しかし、無料の証明書を新たに ACM からリクエストして、この新しいものに対して DNS での検証を選択できます。

つまり、Eメール認証で取得したドメイン名の証明書をDNS認証で新しく取得して、各AWSリソースとの紐づけを順次切り替えていけば良いです。