[小ネタ] AWSのELB/CloudFront用SSL証明書の中身を一覧する
ども、大瀧です。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の高みを目指して行きましょう!