AWS Certificate Manager に登録した証明書をCloudFrontで使用する場合にはRSA 4096-bitは使えない

CloudFrontにSSL証明書をインポートしようとCustom SSL CertificateからACMに登録した証明書を指定したらエラーになった話。

エラーメッセージはこんな感じ

com.amazonaws.services.cloudfront.model.InvalidViewerCertificateException: The specified SSL certificate doesn't exist, isn't in us-east-1 region, isn't valid, or doesn't include a valid certificate chain. (Service: AmazonCloudFront; Status Code: 400; Error Code: InvalidViewerCertificate; Request ID: hogehoge)

英語は苦手なので、適当ですが、isn’t in us-east-1 regionとか書いてあったからus-east-1以外に置いちゃってるのかなーと思ったけれどもそんなことはなく、

isn’t validとか書いてあるのでコピペミスったかと思い再度インポートしてみるも同じエラー。

なんでやねん、Let’s Encryptの無料の使ってるからか?と調べていたらこのページへ。

CloudFront ディストリビューションに独自 SSL 証明書を使用できないのはなぜですか?

このエラーメッセージは、インポートした証明書が次のどれか 1 つまたは複数に当てはまることを示しています。

米国東部 (バージニア北部) 以外の AWS リージョンにインポートした
2048 ビットより大きい
PEM エンコードなし
パスワード保護されている

2048 ビットより大きい

ぉ・・・?

証明書は、2048 ビット以下の RSA 証明書である必要があります。ACM は 1024 ビットから 4096 ビットの RSA 証明書をサポートしますが、ACM と統合された CloudFront などのサービスは最大 2048 ビット RSA 証明書をサポートします。

ぬ、これは・・・と思い、ACMから鍵を見直す。

パブリックキー情報   RSA 4096-bit

なるほど。RSA 4096-bitはサポートしていないと。

というわけで作り直して入れたら平気だった。