User certificates downloaded for ELB cannot be used for CloudFront.
So, you need to download the SSL certificate (it can be the same certificate) a second time, but in a slightly different way.
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/DistributionName/
Source: https://aws.amazon.com/premiumsupport/knowledge-center/cloudfront-custom-certificate/
Note /cloudfront/ at the beginning of the --path parameter.
So, in the end you will have two certificates that will be used by ELB, which will be used by CloudFront. But they can come from the same source certificate files.
source share