Amazon CloudFrontの独自ドメインSSL証明書をAWS CLIでアップロードする

Amazon_CloudFront

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

はじめに

オペレーション部の高橋です。

今回はCloudFrontで独自ドメインSSL証明書を使用するために AWS CLIで証明書をアップロードする方法を書きたいと思います。

以前、弊社のブログでも紹介していましたが「aws-iam-tools」での方法でしたので AWS CLI版の投稿となります。

CloudFrontの独自ドメインSSL証明書対応を試してみた | Developers.IO

証明書をアップロードする

ELBの証明書はコンソール上でもアップロード可能ですが、CloudFrontではコマンドラインでアップロードします。

$ aws iam upload-server-certificate --server-certificate-name CertificateName ¥
                                    --certificate-body file://public_key_certificate_file ¥
                                    --private-key file://privatekey.pem ¥
                                    --certificate-chain file://certificate_chain_file ¥
                                    --path /cloudfront/path/

--server-certificate-name CloudFrontの [SSL Certificate] リストに表示される名前

--certificate-body SSL証明書

--private-key 秘密鍵

--certificate-chain 中間証明書

--path 証明書のパス(「/cloudfront/」で始まり「/」で終わる必要があります)

実際にアップロードしてみます。今回は中間証明書は外しました。

$ aws iam upload-server-certificate --server-certificate-name hagehage-certificate ¥
                                  --certificate-body file://public.crt ¥
                                  --private-key file://private.key ¥
                                  --path /cloudfront/dev/
{
    "ServerCertificateMetadata": {
        "ServerCertificateId": "ASCAJF2IKDRLN3BKS2UKQ",
        "ServerCertificateName": "hagehage-certificate",
        "Expiration": "2025-08-08T01:48:26Z",
        "Path": "/cloudfront/dev/",
        "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/cloudfront/dev/hagehage-certificate",
        "UploadDate": "2015-08-11T10:25:26.418Z"
    }
}

AWS CLIで証明書の確認

$ aws iam get-server-certificate --server-certificate-name hagehage-certificate
{
    "ServerCertificate": {
        "CertificateBody": "-----BEGIN CERTIFICATE-----\nMIIDBjCCAe4CCQDIfhBKW+ifujANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJK\nUDETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0\ncyBQdHkgTHRkMB4XDTE1MDgxMTAxNDgyNloXDTI1MDgwODAxNDgyNlowRTELMAkG\nA1UEBhMCSlAxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0\nIFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB\nAL4ISinC2Uv0LPWBzT1gPWP+9ZmCjSjxWKsFpC4usyc7yz4MH9Gr1U5AL2EvbytB\nFkbT6cVft6tG3R4XrLwoiwV9/svV2GikdSbYNz998378HKNVY0PmxjRnUExBMemc\n+INxNS45hKrP8i87ZojHZcSaVHYKxTkU0l7ySC4Izd/KF1Qk+q/F+aQOmWTVf+ZN\nEq9ut1c/53rlWSteXnov2GPRgZe0UxAKuLWBSbtSfQarKHlZtsKDs6jsOi/cOed6\noezLa7mx34lyLqdxw29wQf0AQIBmX1FhFljmlGPcLX1/IYR67ApIFmESN6JWXF7y\nDTiW3MlPAAqngH38IjZSQuUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAI7AWCJ1i\np8Fm46YxzTzrQCoHO3UUzvPX2Mnfpi518eV3sokQUg+MZKuUEc5XRo8wPirMDzf6\nr3ITzoFAt8j9ffYK++hUDgRvOmvLKIjVTd/YGcexrAjODH6Otiavy3CGMQwmFELn\nla1JTQcBIR1sFZcGbH2EZjxbHaQLnJXZmRbTbavq+LM9St18l7TzcS7twrydSGz6\nmlx4QWMYuMQC/NT5EKcdFpl0RiyohAiLJ59ztT+LGeKyoAfEYtuK+b+uoQec1PPy\nDR8uQx1raUtoZa6QPwhMtvOM9r6yRSMFVrri0wJK7uvVh/U7L8w4aXGCYdUe1MRF\n4DKYvfRTNoxJcg==\n-----END CERTIFICATE-----",
        "ServerCertificateMetadata": {
            "ServerCertificateId": "ASCAJF2IKDRLN3BKS2UKQ",
            "ServerCertificateName": "hagehage-certificate",
            "Expiration": "2025-08-08T01:48:26Z",
            "Path": "/cloudfront/dev/",
            "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/cloudfront/dev/hagehage-certificate",
            "UploadDate": "2015-08-11T10:25:26Z"
        }
    }
}

CloudFront Distributionで確認

skitch

Distribution Settings の SSL Certificate

Custom SSL Certificate (stored in AWS IAM): で選択ができることが確認できます。

証明書関係のAWS CLI コマンド

証明書の一覧を確認

$ aws iam list-server-certificates
{
    "ServerCertificateMetadataList": [
        {
            "ServerCertificateId": "ASCAIQ5APJPGFDW5WR5EG",
            "ServerCertificateName": "test-20150409",
            "Expiration": "2016-04-08T04:50:33Z",
            "Path": "/",
            "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/test-20150409",
            "UploadDate": "2015-04-09T04:53:16Z"
        },
        {
            "ServerCertificateId": "ASCAIJFFQEOYR2OVAOY64",
            "ServerCertificateName": "test-20150707",
            "Expiration": "2025-07-04T10:30:57Z",
            "Path": "/",
            "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/test-20150707",
            "UploadDate": "2015-07-07T10:32:11Z"
        },
        {
            "ServerCertificateId": "ASCAJF2IKDRLN3BKS2UKQ",
            "ServerCertificateName": "hagehage-certificate",
            "Expiration": "2025-08-08T01:48:26Z",
            "Path": "/cloudfront/dev/",
            "Arn": "arn:aws:iam::xxxxxxxxxxxx:server-certificate/cloudfront/dev/hagehage-certificate",
            "UploadDate": "2015-08-11T10:25:26Z"
        }
    ]
}

証明書の移動

$ aws iam update-server-certificate --server-certificate-name アップロードした証明書名 ¥
                                    --new-path /cloudfront/path/

証明書の名前の変更

$ aws iam update-server-certificate --server-certificate-name アップロードした証明書名 ¥
                                    --new-server-certificate-name 変更後の証明書名

証明書の削除

$ aws iam delete-server-certificate --server-certificate-name アップロードした証明書名

まとめ

CloudFrontで使用する独自ドメインSSL証明書をAWS CLIで証明書をアップロード、

証明書の削除やアップロードした証明書の名前の変更、移動などのAWS CLIでのコマンドを簡単に紹介いたしました。

AWSのドキュメントにもありますのでそちらも参考にしてみてください。

参考URL

HTTPS 接続を使用したオブジェクトへのアクセス | AWS Documentation 開発者ガイド