ACM発行の証明書の自動更新条件

AWS運用自動化サービス「Cloud Automator」

PS課の杉村です。AWS Certificate Manager(以下、ACM)を使うと、無料でSSL/TLS証明書(ただしDV、Domain Validation証明書)を発行することができます。
発行した証明書はElastic Load Balancer(ELB)やCloud Formationにデプロイして使用することができます。
さらに魅力的なのは、毎年(じゃないかもしれませんが)めんどうなあの作業、そう証明書の更新です。ACMでは一定の条件を満たしていれば、何もしなくても自動で証明書が更新されるのです。

それでは一定の条件とは何でしょうか?以下のブログで弊社社員が記載していますが、その後サービスのアップデートで「DNS検証」という選択肢が増えましたので、本稿では最新情報を記載してみます。

参考(弊社ブログ): AWS Certificate Manager(ACM)の証明書更新の注意ポイント

2種類の検証方法

まずACM無料証明書の発行に際して、そのドメインが確かに申請者の持ち物であるという検証をする必要があります。
1つはEメールによる検証、2つ目はDNSによる検証です。

Eメール検証では特定のメールアドレスに対して承認URLが記載されたメールが送付され、そのURLをクリックすることで検証します。
DNS検証では特定の文字列を持ったCNAMEレコードを対象ドメインのDNSサーバに登録し、AWSがその名前解決をすることで検証します

検証条件…Eメール検証の場合

以下の全ての条件を満たすとき、証明書は自動で更新されます。

1. 証明書が使用されている(ELB等にセットされている)
2. 証明書のドメインに対してパブリックからHTTPS接続ができる

大事なのは2番です。対象のドメインに対してパブリックからHTTPSアクセスができる必要があります。セキュリティグループ等でGlobal IP制限をしていると、自動更新が失敗します。
なおAWSがどこからサイトに対してHTTPSの接続確認をするのか、その接続元IPアドレスは公開されていません。

自動更新が失敗したらどうなるのか?それは、発行時と同じEメールアドレスにまた検証用のURLが記載されたEメールが送付されます。担当者がそのURLをクリックすれば、無事更新ができます。
ちょっとこれは面倒ですし、証明書の更新時期をすっかり忘れたうえメールを見落とすと証明書が期限切れになってしまいます。要注意です。

参考(公式ドキュメント): ドメイン検証の仕組み

検証条件…DNS検証の場合

以下の全ての条件を満たすとき、証明書は自動で更新されます。

1. 証明書が使用されている(ELB等にセットされている)
2. DNSに登録したCNAMEレコードが名前解決できる

こちらであれば発行時と同様に、DNSに登録したレコードが名前解決できればサイトがパブリックにオープンになっていなくても証明書の自動更新ができます。(もちろん、名前解決だけはパブリックからできる必要があります)

もし更新時にCNAMEレコードが削除されてしまっている場合は、特定のドメイン管理者メールアドレスに対して確認のメールが送付されます。ただしEメール検証の時とは違い、検証用URLは記載されていませんので更新するためにはDNSに再度、CNAMEレコードを登録する必要があります。

参考(公式ドキュメント): DNS を使用したドメインの所有権の検証

ポイント

・ACM証明書はEメール検証とDNS検証がある
・自動更新の条件はそれぞれ違う
・Eメール検証ではパブリックからサイトがアクセスできる必要があるため注意

なお自動更新の条件が満たされているかどうかはマネジメントコンソールから確認できますため、ご参考にどうぞ。

AWS運用自動化サービス「Cloud Automator」