[アップデート] CloudFormation で AWS Certificate Manager のDNS検証を自動化できるようになりました

CloudFormation によって ACM の DNS 検証ステップが自動化されました。
2020.06.17

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

コンサルティング部の西野です。

AWS Certificate Manager (ACM) で取得した SSL/TLS 証明書を DNS 検証するまでのステップを CloudFormation のテンプレート一つで自動化できるようになりました。

AWS Certificate Manager Extends Automation of Certificate Issuance Via CloudFormation

従来は Route 53 などで管理される Hosted Zone に CNAME レコードを個別に登録する必要がありましたが、このたびのアップデートにより CNAME レコードの登録までをCloudFormation テンプレートが担ってくれます。

また、下記のプロパティもあわせて追加されています。

  • 証明書の認証機関として ACM のプライベート CA を指定するプロパティ(CertificateAuthorityArn
  • Certificate Transparency ロギングをオプトイン・オプトアウトするためのプロパティ(CertificateTransparencyLoggingPreference

詳細については CloudFormation の下記ドキュメントをご覧ください。
AWS::CertificateManager::Certificate

やってみた

ACM に www.<黒塗り>.net を登録して DNS 検証を行なうところまでやってみました。

CloudFormation テンプレート

テンプレートとして下記のものを使用します。
DomainValidationOptionsHostedZoneIdを指定してやるところが肝です。

AWSTemplateFormatVersion: "2010-09-09"
Resources:
  Certificate:
    Type: AWS::CertificateManager::Certificate
    Properties:
      DomainName: www.<黒塗り>.net
      DomainValidationOptions:
        - DomainName: www.<黒塗り>.net
          HostedZoneId: Z040XXXXXXXXXXXXXXXX
      ValidationMethod: DNS

Hosted Zone ID の確認

マネージメントコンソールから対象の Hosted Zone の ID を確認します。
AWS CLIの場合は下記のコマンドを使ってください。

$ aws route53 list-hosted-zones
{
    "HostedZones": [
        {
            "Id": "/hostedzone/Z040XXXXXXXXXXXXXXXX",
            "Name": "<黒塗り>.net.",
            "CallerReference": "RISWorkflow-RD:59dXXXXd-XXXX-XXXX-XXXX-8558XXXX0287",
            "Config": {
                "Comment": "HostedZone created by Route53 Registrar",
                "PrivateZone": false
            },
            "ResourceRecordSetCount": 2
        }
    ]
}

CloudFormation スタックの作成と経過観察

上記のテンプレートでスタックを作成します。

スタック作成後、ACM のコンソールを見に行くとwww.<黒塗り>.netの証明書が作成されています。

Hosted Zone Z040XXXXXXXXXXXXXXXX を見に行くと検証用の CNAME レコードが追加されています。しばらく待ちます。

証明書の DNS 検証が無事終わりました。

スタックを見に行くと CNAME レコードの登録部分まで情報を出力してくれていることがわかります。

注意点

証明書が不要になった場合にスタック(もしくはType: AWS::CertificateManager::Certificateのリソース)を削除しても、DNS 検証に用いられた CNAME レコードは対象の Hosted Zone に残ったままです。気になる方は手動で削除をしてください。

終わりに

このブログがほんの少しでも世界を良くできれば嬉しいです。
コンサルティング部の西野 (@xiyegen) がお送りしました。