[小ネタ] AWSのELB/CloudFront用SSL証明書の中身を一覧する

AWS

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

ども、大瀧です。AWS CLIでこんなワンライナーができた、というご紹介です。

アップロードしたSSL証明書を確認したい

AWSのELBやCloudFrontは、いわゆるSSL Terminationと呼ばれるSSL/TLS処理機能があります。それらを利用する再にはSSLのサーバー証明書をアップロードするわけですが、証明書は年ごとに更新されたり扱うドメインが追加されたりするとあっという間に増えて行き、「この証明書なんに使うんだっけ」「上限数に行きそうなので古いのを消したいんだけど、どれだかわからない」といったことになりがちです。ところが、Management Consoleでは証明書一覧の画面が無く、また証明書のBODYを確認する手段もありません。

そこで、AWS CLIでワンライナーで証明書の一覧とBODY文字列を確認するコマンドラインを考えてみました。以下の通りです。
(AWS CLIのセットアップおよびクレデンシャル設定は事前に構成しておく必要があります)

$ aws iam list-server-certificates --output text --query 'ServerCertificateMetadataList[].[ServerCertificateName]' | xargs -L 1 \
  aws iam get-server-certificate --output text --query 'ServerCertificate.[ServerCertificateMetadata.ServerCertificateName,CertificateBody]' --server-certificate-name
sample.org	-----BEGIN CERTIFICATE-----
MIIB+zCCAWQCCQD7qWBEaZVjKTANBgkqhkiG9w0BAQUFADBCMQswCQYDVQQGEwJY
WDEVMBMGA1UEBwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBh
bnkgTHRkMB4XDTEzMTAyMTA5MjEwOFoXDTE0MTAyMTA5MjEwOFowQjELMAkGA1UE
BhMCWFgxFTATBgNVBAcMDERlZmF1bHQgQ2l0eTEcMBoGA1UECgwTRGVmYXVsdCBD
b21wYW55IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAx54v0eHbiX84
BePbwvaTg5eu6Fy7Mrb0BetpoJ90D0skadcv7ku1VxIuLrplFpYO2iA05pZ2n5QG
XNusRVQuHg6mumkumv1ZcSsI2PHnPGePANsVM4hO1XenD+oBuItZX3N4+yGMPDxC
MmrmpxFBRJqXsz9pnC/FRoudj1v+/zUCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBB
n8lpL3bro092EQ5sqsbgLXsb1iJc5DZ1ZE0jWvuJdi839tY7aSDhooyXmqkt61hO
I3U6dEfzbQ72MOQpgNukK3SRCarW2oAEckZS5OO6trtlLvsrhMAUBurttPjTDYYa
R4/rkZp5BTWZh3CYRFySjmn4EcC0dL8mJ5auq3kusQ==
-----END CERTIFICATE-----
sample.com	-----BEGIN CERTIFICATE-----
MIIC0jCCAbqgAwIBAgIJAJfH+KhOKfmYMA0GCSqGSIb3DQEBBQUAMCExHzAdBgNV
BAMTFm90YWtpLmNsYXNzbWV0aG9kLmluZm8wHhcNMTQwMzA2MDIzODQxWhcNMjQw
MzAzMDIzODQxWjAhMR8wHQYDVQQDExZvdGFraS5jbGFzc21ldGhvZC5pbmZvMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzRHHhxiP+9Y+9Oa5mOENXgGf
yvhWY+wkFTF/F7AzJe0g930wKiBKNJnNJuFAENIMUeooLcn/S4BlfDPXBiKESO3b
OqJttDz9Klo9IRtsqB6vn6H0a9qpKDvz2aQLaiZe3+JlRk83Pmg2Shq5QgJ1Uy92
A1QJXP9t8W5Cw42G/P4uOgnUbivb6UQCFfstzWUANxUrqIKmttEqqJfxvt8KSjJ8
gcxyM1YA28ww8/ZeONvEOn99knnOwv2n28Cf18zlVJLv75JAVIzPnh2wHse2z9A4
cqAEvALNI2YdfoG23qc4mzDDubBHBgKKTVBXPx543mSSD4XK135E9P+/sWirvwID
AQABow0wCzAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBBQUAA4IBAQABoo5uuarw5y6j
zfjdWclX76pIlhnswOQcgPk0DGUhLGqPpNiwz0JbrmLShxI4s1ALj8yaoraZvzMU
Xztj3jfYc8HQe2bgMVAIysFfmp+8ifTy8n3F5QrBd1ynumdzMkUdH3xqxXKrnak9
XV2PKZzZXYPb5fwiCl8ssprEds6AekkAr/nnJB9O3oIXA3tOFMczPvcNDRXrN+1C
ACttDPY94oSFuwajV7+x9qAHTYHTernusgKDYDtub59Cn+5yhHhQHyGvU0f0g6IY
XQTT7HL13+nZvNIEpJam6dPn9Vsl7fYAPCFREmKN0NHdpX78E4lEabnMQr06RpA6
uHV8UqNW
-----END CERTIFICATE-----
$

証明書のBODYはaws iam list-server-certificatesでは取れないので、xargsコマンドでaws iam get-server-certificateに渡しているのがポイントです。出力フォーマットはコピペ用途で使うのであればtextではなくjson--outputオプションで指定してもよいでしょう。

まとめ

アップロードしたSSL証明書の一覧と中身を表示するコマンドラインを紹介しました。
CLI力を高めてManagement Consoleでは辿り着けない、AWS SysOpsの高みを目指して行きましょう!

AWS Cloud Roadshow 2017 福岡