我通过运行good ole
创建了CSR$ openssl req -nodes -newkey rsa:4096 -keyout example.key -out example.csr
这产生了一个example.csr和example.key
然后,我签了它并收到了4个.crt文件。我的域.crt,2个中间体和根。
从这个:http://docs.aws.amazon.com/IAM/latest/APIReference/API_UploadServerCertificate.html,我认为亚马逊希望我的私钥是PEM编码的,所以我跑了
$ openssl rsa -in example.key -text > example.pem
Cloudfront还希望他们称之为CertificateChain,而且从https://bryce.fisher-fleig.org/blog/setting-up-ssl-on-aws-cloudfront-and-s3/和http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SampleCert,该文件似乎应该是连接在一起的2个中间证书。所以我使用文本编辑器创建了该文件,并将其命名为example.crt.chain
最后,随着所有这一切,我跑了
$ aws iam upload-server-certificate --server-certificate-name star-assets-example-com --certificate-body file://STAR_assets_example_com.crt --private-key file://example.pem --certificate-chain file://example.crt.chain --path /cloudfront/assets/
这让我回到了" ServerCertificateMetadata"。最后,我访问了Cloudfront控制台并尝试将该证书设置为"自定义SSL证书"对于Cloudfront。但是,它告诉我
AWS Error Code: InvalidViewerCertificate, AWS Error Message: The specified SSL certificate doesn't exist in the IAM certificate store, isn't valid, or doesn't include a valid certificate chain.
我尝试过修改。
openssl rsa
编码的PEM文件。这会从上传工具产生错误。此文件的格式为" ----- BEGIN PRIVATE KEY -----...----- END PRIVATE KEY -----" 答案 0 :(得分:16)
事实证明,我的错误只是我的证书大小太长了。最大长度是2048,而我的是4096!我通过阅读Having trouble associated SSL cert with Amazon Cloudfront
中的类似问题找到了我的问题我想这就是晦涩的'无效的'意思。我真的希望有更多验证和更好的错误消息!!!!
答案 1 :(得分:1)
我也遇到了这个错误,但事实证明我还需要从发行者上传证书链。这是我跑的最后一个命令。
aws iam upload-server-certificate --server-certificate-name <name> --certificate-body file://domain.crt --private-key file://domain.key --certificate-chain file://issuer.cer --path /cloudfront/
答案 2 :(得分:0)
也出现了这个错误,并且花了更多的时间,而不是试图解决它失败的原因(密钥大小超过2048,证书链等)。
我在通过Terraform创建分发时尝试使用IAM证书(指定iam_certificate_id)。在查看用于创建分发的AWS Web界面之后,没有选项可以输入IAM证书ID,并且它似乎只允许ACM证书。 IAM证书是否曾经存在支持(因为Terraform aws_cloudfront_distribution包括它)但现在已被删除(在AWS控制台上不可用)?
当使用ACM证书而不是IAM证书时,它对我来说很好。