awscliでCloudFrontへ証明書をアップロード

CloudFrontの場合GUIが用意されていないのでawscliからアップロードします。書式は下記のようになっているので

aws iam upload-server-certificate --server-certificate-name 任意の名前 --path /cloudfront/ --private-key file://秘密鍵のパス --certificate-body file://SSL証明書のパス --certificate-chain file://中間証明書のパス

このように実行しました。

 aws iam upload-server-certificate --server-certificate-name ssl.xxxx --path /cloudfront/ --private-key file://~/xxxxx.pem --certificate-body file://~/xxxxx.cer --certificate-chain file://~/xxxxx.ca

基本的にはこれでアップロードできます。

証明書の期限前にアップロードしようとするとエラー

が、書式としては合っているはずなのにエラーが起きてしまいました。

An error occurred (MalformedCertificate) when calling the UploadServerCertificate operation: Unable to parse certificate. Please ensure the certificate is in PEM format.

検索したところ file:// が指定していないというのがたくさん出てきたのですが、 今回の場合は証明書の期限前だったということでした。 確認方法は

openssl x509 -in xxxxx.cer -noout -dates
notBefore=Dec 25 15:00:00 2016 GMT
notAfter=Dec 27 14:59:59 2017 GMT

参考

http://kayakuguri.github.io/blog/2015/04/09/ssl-error/