AWS上に導入したSSL/TLSサーバ証明書のリソース確認に便利なツール「aws-cert-utils」
こんにちは、コカコーラ大好きカジです。
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 を作った話