🎉

AWS System ManagerにてEC2に証明書を更新・導入する

2022/11/03に公開

はじめに

こんにちは、山田です。
今回は、EC2インスタンスに配置されている、AWS System Managerを用いて証明書を更新・導入する方法について記載します。
よろしくお願いします。

構成図

今回は、ACMに登録してある証明書をCloudWatchにて監視し、証明書の有効期限が10日になったら、アラームを発行し、運用担当者に通知を飛ばします。
運用担当者は通知を受け取ったらSystem managerのRun Commandを実行し証明書を更新・導入するコマンドをEC2に実行させます。
※証明書は、ACMにて発行されているものとする。

Apacheインストール

Apacheをインストールします。

yum install httpd

SSLモジュールをインストールします。

yum install mod_ssl

Apacheを起動します。

systemctl start httpd

ブラウザでアクセスして、以下のように表示されればOKです。

CLoudWatchアラーム設定

CloudWatchを作成します。
メトリクスは、対象の証明書の「DaysToExpiry」を選択する。

証明書の有効期限が10日以下になったら、アラームが発行されるようにします。

トピックを選択して、CloudWatchアラームを作成します。

Run Command実行

運用担当者は通知を受け取ったら、System MAnagerのコンソール画面に移動し、Run Commnadを選択する。
コマンドドキュメントは、「AWS-RunShellScript」を選択する。

コマンドパラメーターは、以下を入力する。

sudo su
aws scm renew-certificate --certificate-arn 証明書のARN
export PATH="$PATH:/root/.local/bin"
cd /etc/pki/tls/certs/
aws acm export-certificate \
--certificate-arn 証明書のARN \ --passphrase パスフレーズ \
| jq -r '"\(.Certificate)"' \
> /etc/pki/tls/certs/証明書の名前
aws acm export-certificate \
--certificate-arn 証明書のARN  \ --passphrase パスフレーズ \
| jq -r '"\(.CertificateChain)"' \
> /etc/pki/tls/certs/ルート証明書の名前
 cd /etc/pki/tls/private
aws acm export-certificate \
--certificate-arn 証明書のARN  \ --passphrase パスフレーズ \
| jq -r '"\(.PrivateKey)"' \
> /etc/pki/tls/private/秘密鍵の名前
systemctl restart httpd

対象のEC2を選択し、コマンドを実行します。

動作確認

ブラウザでアクセスして、以下のように表示されればOKです。

Discussion