2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ACM証明書を自動更新してチャットボット経由で通知を受け取る

Last updated at Posted at 2020-05-15

思い出したようにサーバー証明書の更新通知が来たので、復習を兼ねて設定方法をメモ。

ちなみに証明書はVue.jsのサンプルサイトやCloudFront+S3など、主にWebサイト系の素振り(たまに本番運用)をする際に使っている。
ドメインはRoute 53で構成。

やりたいこと

  • AWS Certificate Managerで運用している証明書の、1年ごとの更新を自動で行えるようにする
  • 更新時にチャットボットを介して通知を受け取る

使ったサービス

  • AWS Certificate Manager(ACM)
    • 2K証明書を無料で払い出し、更新するためにACMを使う。
  • AWS Chatbot(Chatbot)
    • 証明書自動更新の通知をチャットツールに送るためのチャットボットを作るのに使用。
  • Amazon Chime(Chime)
    • 普段使いしているチャットツール。ここでChabotから通知を受け取る。
  • AWS Personal Health Dashboard(PHD)
    • 自動更新の通知をマネジメントコンソール上で受け取る仕組み。
  • Amazon CloudWatch Events(CWE)
    • PHDのイベントを引っかけて処理するのに使う。
  • Amazon Simple Notification Service(SNS)
    • CWEからメッセージをPublishし、SubscribeしているChatbotに通知するための繋ぎ目として使う。

少々長いが、正しく構成すれば、

1.png

という流れで自動更新の通知が飛んで来るようになる。

イメージとしては、「証明書の自動更新」というニュースがニュースサイトに載ると、それを担当者がクリップして登録者に一斉配信し、登録者に名を連ねているボット君が配信メッセージを受け取ってチャットに投稿してくれる、といった感じ。自分でニュースサイトをウォッチしている必要がなくなるし、見落としも起きにくくなくなるメリットがある。

ACMの証明書更新について

ACMで作成した証明書は1年で切れる。
更新方法は、ドメインの所有権の検証方法(リクエストしたユーザーがドメインの管理者であることを確認するプロセス)に対応する形で二種類存在する。

検証方法 概要 更新
Eメール検証 whoisの管理者アドレスにメールを送付し、所有権を検証する 手動
DNS検証 ドメインにACMがCNAMEを作成し、レコードの存在をもって所有権を検証する 自動

以前サイト運用をしていた時はEメール検証を使っていたが、ドメインのwhois情報は一般にプライバシーを考慮してプロバイダーによる代理公開となっているため、メールが届かない。このため、更新時期にwhoisを一時的に解除して検証メールを受け取れるようにした上で承認を行う必要があり、大変面倒くさかった。
DNS検証にしておくと、ACMが登録したCNAMEがドメイン上に存在している限り自動的に検証され、whoisをいじる必要も、メールを開いて承認する必要もない。なので、よほどのことがない限りDNS検証にしておくのがおすすめ。
詳しくはこちら

通知

自動更新にしておけばほぼメンテフリーだが、一応更新の通知は受け取りたい。
証明書の更新はAWSのPersonal Health Dashboard(PHD)で捕捉できるので、これをボットに食わせてチャットツールで受け取れるようにする。

Step by Step

手順は以下の通り。
最初に「受け手」を構成し、次に「送り手」を構成する。

1. 証明書のリクエストとDNS検証の構成

マネジメントのコンソールにログインし、ACMノードを開く。
新規に証明書をリクエストし、その際ドメイン所有者の検証方法としてDNSの検証を選択する。後は手なりでOK。
ACM

2. Chime Webhookの作成

通知を受け取れるよう、チャットボットを構成していく。
まずは通知を受け取りたいChime Room(チャットツール上の部屋。Slackならチャンネル)を選択し、右上の管理ボタンから、Webhookを生成する。名前は何でもよい。
Chime Webhook1
webhook-acm-room.png

3. WebhookのURLをコピー

Webhookを作成したら、URLをコピーする。
Chime Webhook1

4. 新規Chatbotの作成

マネジメントコンソールからAWS Chatbotに移動し、新しいChatbotを作成する。
ChimeとSlackが選択可能。ここではChimeを選択。
Chatbot1

5. Chatbotの設定(1)

そのままWebhookの設定画面に進むので、先程コピーしたChime WebhookのURLを貼り付ける。
webhook-acm-config.png

6. Chatbotの設定(2)

CloudWatchにアクセスするためのIAMロール(今回はCloudWatchは関係ないが、設定上必須)と、指定したWebhookに通知を行うためのSNSトピックを指定する。ここでは、いずれも作成されている前提で進める。

IAMロール SNSトピック
role4Chatbot myTopic-NotifyMe

webhook-acm-config2.png

設定が終わったら保存。
Chatbot(Webhook)が作成され、SNSにSubscriberとしてWebhookが追加される。

【Chatbot】
chatbot.png
【SNS】
sns.png

ここまでで、SNSトピックに送られた通知をChatbotで受け取り、Chimeに送るための仕掛けができた。
2.png

ただし、「受け手」を作っただけなので、これだけではまだ更新通知は届かない。

ACMの証明書更新通知はPHDに届くので、PHDのイベントを引っかけて、SNS経由でChatbotに送るための「送り手」を構成する必要がある。

7. CWEルールの作成

PHDの通知を受け取れるよう、CWEルールを設定する。
PHDの右上にCWEへのリンクがあるので、今回はここから飛ぶ。
スクリーンショット 2020-05-15 17.00.24.png

8. CWEルール:イベントソースの設定

CWEの構成画面から、イベントソースとしてHealthを選択する(HealthはPHDを指す)。
スクリーンショット 2020-05-15 16.59.15.png

9. CWEルール:ターゲットの設定

同じく、ターゲットとしてSNSを選択する。トピックは先程Chatbotで設定したものを使う(PublisherがCWE、SubscriberがChatbotの関係)。
スクリーンショット 2020-05-15 16.59.22.png

あとはルール名を設定して完了。

受け手と送り手の構成ができたので、これで、1年ごとの証明書更新時にChimeに通知が届くようになる。
3.png

証明書更新の通知

更新日になると、DNS更新の恩恵で証明書が自動更新され、以下のようなメッセージがChimeに届く。
webhook-acm-update.png

ちなみに、AWS BudgetsなどもChatbotに対応しているので、SNS経由でAWSの利用量アラートをChime(ないしSlack)で受け取る、といったことも可能。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?