ちょっと話題の記事

ACMで管理されているSSL/TLS証明書の自動更新失敗について

2017.06.28

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

はじめに

Amazon Certificate Manager(以降、ACM)から取得したSSL/TLS証明書についての有効期限について書いてみます。 ACMで提供されるSSL/TLS証明書は13ヶ月の有効期限が設定されており、有効期限間近になるとACM側で自動更新が実施されます。 ですが、一部の証明書は自動更新が実施されずに手動にて更新を行う必要があります。

どういった時に自動更新されないか?

ACMで管理されている証明書で自動更新が実施されない理由は以下になります。

自動更新プロセス適用条件 AWS Certificate Manager (ACM) 証明書の自動更新時の注意点

通常、ACM では自動で証明書更新が完了いたします。ご利用者側で証明書をインストールしたりソフトウェアを更新いただく必要はありません。自動更新による通信の瞬断もありません。証明書の保守管理が理由でWebサイトなどを一時停止する必要無いのは便利ですね。

この自動更新が完了するには以下の条件を全て満たす必要があります。

証明書に記載されている全ての完全修飾ドメイン名 (FQDN) が DNS で名前解決できること。なお、ワイルドカードドメイン (例:*.example.com) に関しては ACM は名前解決の確認を行いません。

CloudFront や ELB (Classic Load Balancer や Application Load Balancer) など、証明書と関連づいている AWS リソースが、インターネット経由で SSL/TLS 接続できるようになっていること。 なお、ワイルドカードドメイン (例:*.example.com) に関しては、ACM側が接続先を正しく特定できない可能性があるので、この先に書かれている「自動更新が失敗した場合」に備えてください。 これらの条件に当てはまらない場合は自動更新が失敗することになります。

以下の条件でも証明書の自動更新に失敗する可能性があります。

  • ワイルドカード証明書を利用している
  • 証明書がELBやCloudFrontに証明書が適用されていない
  • 証明書が適用されているELBやCloudFrontへのアクセスが発生していない
  • ACM以外で取得した証明書をインポートしている

ACM の Amazon が発行する証明書のマネージド型更新より、
「自動ドメイン検証の仕組み」から、www.で始まるドメインについては自動更新が適用されるものと思われます。

自動更新に気づくには?

それでは上記のように自動更新プロセスが適用されなかった証明書について、どのようにすれば更新に気づけるのか
3パターンの対応を挙げてみます。

スクリプトによる更新時期確認

ACMにて管理されている証明書は以下のスクリプトにて有効期限を確認することが出来ます。
[ACM] 証明書の全リージョン証明書の有効期限チェックをCLIで実施してみた

AWS Personal Dashboardによる通知

ACM は、AWS Personal Health Dashboard に通知して、保留中の証明書の更新にアクションが必要であることを知らせます。ACM は、証明書が失効日から 45 日、30 日、15 日、7 日、3 日、1 日経過し、証明書の 1 つあるいは複数のドメイン名に手動による検証が必要であるときにこの通知を送信します。この通知はお知らせのみとなります。手動でドメイン名を検証するには、ドメイン検証 E メールのリンクに従う必要があります。

ACM の Amazon が発行する証明書のマネージド型更新

AWSからの検証メールによる通知

AMCを利用しているAWSアカウントに対して次の件名でメールが送付されます。 基本的にAction Requiredの件名でメールを受信した時は注意が必要です。

Action Required - Your certificate renewal

証明書の有効期限が切れるタイミングが近い

URGENT Action Required - Your certificate renewal

証明書の有効期限が切れるタイミングが直近に迫っている

Your certificate has expired

対象の証明書が失効してしまった

Your certificate is renewed

SSL/TLS証明書が無事更新された場合に送付されます。

手動による証明書更新対応方法

対応方法はACMにて証明書を取得した時のメールと同じように検証用メールのApproveをクリックして更新を行います。 検証用メールが見当たらない場合は次の手順で検証用メールを再送信することが出来ます。

  1. AWSマネジメントコンソールにログイン
  2. Certificate Managerを選択
  3. 更新対象の証明書チェックボタンを選択
  4. [アクション]-[検証Eメールの再送信]を選択
  5. 検証メールアドレスに送信された「Certificate approval for <ドメイン名>」に記載されている「Amazon Certificate Approvals」を選択
  6. 承認ページが表示されますので、ドメイン名・AWSアカウントID・証明書識別子に相違がないことを確認して「I Approve」を選択
  7. 「Success」が表示されることを確認
  8. Certificate Managerに戻って頂き、証明書の更新ステータスが「成功」になっていることを確認

以上にて、更新手続きは完了です。

最後に

現在、SSL/TLS証明書は多く利用されており、ACMの登場によって証明書を利用することでハードルも低くなったと思います。
また、本件のように証明書の期限切れに関するメールは通常だと英文メールとなりますが、弊社メンバーズサービスをご利用のお客様には日本語訳と対応方法について記載させて頂いております。
今回のような通知についても見落としがちになってしまうのでサービス運用者の一助になることを願います。

合わせて他記事をお読みいただけると幸いです。

Certificate Manager