AWS上に導入したSSL/TLSサーバ証明書のリソース確認に便利なツール「aws-cert-utils」

こんにちは、コカコーラ大好きカジです。Cloudfront、CLB、ALBに導入したSSL/TLSサーバ証明書の確認に便利なツールをご紹介します。
2019.02.19

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

こんにちは、コカコーラ大好きカジです。

SSL/TLS証明書の更新時に、どのCloudfrontやALB/CLBに証明書が適応されているか簡単に調査したいなぁと思い、同じな悩みを持った人いそうだなぁ・・・と思って調べたら解決していた人がいました。感謝です。

Cloudfront、CLB、ALBに導入したSSL/TLSサーバ証明書の確認に便利なツールです。(EC2インスタンスOS内にインストールしたものは確認できません。)

aws-cert-utilsとは

  • AWS上で利用している証明書を一括管理
  • 証明書の一覧表示、証明書を利用している ALB / CLB / CloudFront の一覧表示も可能

tkuchiki/aws-cert-utils Certificate Utility for AWS(ACM, IAM, ALB, CLB, CloudFront)

AWS上で利用している SSL/TLS 証明書を一括管理するツール aws-cert-utils を作った話

インストール

以下から、aws-cert-utilsをダウンロードし、解凍するだけです。

https://github.com/tkuchiki/aws-cert-utils/releases

私の環境はMacOS用のため、aws-cert-utils_darwin_amd64.zipをダウンロードしました。他のOSもあります。 解凍しましたら、そのまま利用可能です。

IAMアクセスキーの準備

AWS CLIで利用するアクセスキーIDとシークレットアクセスキーを環境変数を設定します。

$ export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxx
$ export AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

これで準備完了です。簡単ですね。

使い方

各リソースを確認します。コマンドと確認結果は、以下となります。

Cloudfront

$ ./aws-cert-utils cloudfront list
+-----------------+-----------------------------------+-------------------------------------------------------------------------------------+
| DISTRIBUTION ID | ALIASES | SSL CERTIFICATE |
+-----------------+-----------------------------------+-------------------------------------------------------------------------------------+
| xxxxxxxxxxxxxx | www.kajihiroyuki.testexample.info | arn:aws:acm:us-east-1:012345678910:certificate/9f2b9998-3842-4c93-a099-xxxxxxxxxxxx |
+-----------------+-----------------------------------+-------------------------------------------------------------------------------------+

CLB

$ ./aws-cert-utils elb list
+----------+------+------------------------------------------------------------------------------------------+
| NAME | PORT | LISTENER SSL CERTIFICATE |
+----------+------+------------------------------------------------------------------------------------------+
| test-clb | 443 | arn:aws:acm:ap-northeast-1:012345678910:certificate/dcb1790c-3874-460b-a121-xxxxxxxxxxxx |
+----------+------+------------------------------------------------------------------------------------------+

ALB

$ ./aws-cert-utils alb list
+----------+------+------------------------------------------------------------------------------------------+
| NAME | PORT | LISTENER SSL CERTIFICATE |
+----------+------+------------------------------------------------------------------------------------------+
| test-alb | 443 | arn:aws:acm:ap-northeast-1:012345678910:certificate/dcb1790c-3874-460b-a121-xxxxxxxxxxxx |
+----------+------+------------------------------------------------------------------------------------------+

IAMに導入した証明書確認

$ ./aws-cert-utils iam list
+------------------------------+-----------------------+--------------+--------------------------------------------------------------------------------------+
| NAME | ID | PATH | ARN |
+------------------------------+-----------------------+--------------+--------------------------------------------------------------------------------------+
| _.testexample.info_YYYYMMDD | xxxxxxxxxxxxxxxxxxxxx | /cloudfront/ | arn:aws:iam::012345678910:server-certificate/cloudfront/_.testexample.info_YYYYMMDD |
+------------------------------+-----------------------+--------------+--------------------------------------------------------------------------------------+

ACMへ導入した証明書確認

$ ./aws-cert-utils acm list
+----------+---------------------------------+-------------------------------+---------+-------------------------------+------------------------------------------------------------------------------------------+
| NAME TAG | DOMAIN NAME | ADDITIONAL NAME | IN USE? | NOT AFTER | CERTIFICATE ARN |
+----------+---------------------------------+-------------------------------+---------+-------------------------------+------------------------------------------------------------------------------------------+
| | *.kajihiroyuki.testexample.info | kajihiroyuki.testexample.info | No | 2019-11-09 12:00:00 +0000 UTC | arn:aws:acm:ap-northeast-1:012345678910:certificate/dcb1790c-3874-460b-a121-xxxxxxxxxxxxxx |
+----------+---------------------------------+-------------------------------+---------+-------------------------------+------------------------------------------------------------------------------------------+

aws-cert-utilsを利用した一括確認用スクリプト

調査のため以下のようなスクリプトを作って調査しました。

cat ssl-check.sh
#!/bin/bash
UTLPATH=<aws-cert-utls保存先のPATH>
PROJECTNAME=$1
DATE=`date +%Y%m%d%H%M`

cd ${UTLPATH}
echo "### Cloudfront ###" | tee -a ${PROJECTNAME}-${DATE}.log
./aws-cert-utils cloudfront list | tee -a ${PROJECTNAME}-${DATE}.log
echo "### ELB ###" | tee -a ${PROJECTNAME}-${DATE}.log
./aws-cert-utils elb list | tee -a ${PROJECTNAME}-${DATE}.log
echo "### ALB ###" | tee -a ${PROJECTNAME}-${DATE}.log
./aws-cert-utils alb list | tee -a ${PROJECTNAME}-${DATE}.log

その他

今回私は試してませんが、以下の機能もありますので利用してみてはいかがでしょうか?

  • 各リソースの証明書更新
  • 証明書削除

感想

複数のAWSアカウントを利用している場合に、SSL/TLSサーバ証明書の適応の確認や管理が楽になると思います。

参照元

tkuchiki/aws-cert-utils Certificate Utility for AWS(ACM, IAM, ALB, CLB, CloudFront) AWS上で利用している SSL/TLS 証明書を一括管理するツール aws-cert-utils を作った話