无法为Cloudfront制作有效的IAM SSL证书
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法为Cloudfront制作有效的IAM SSL证书相关的知识,希望对你有一定的参考价值。
我通过运行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控制台并尝试将该证书设置为cloudfront的“自定义SSL证书”。但是,它告诉我
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.
我试过的修改。
- 包括但不包括链中的根证书。两者都上传但都不起作用。
- 我已经尝试从我的PEM文件的头部删除“模数”,“privateExponent”,“prime1”等,以便它只包含“----- BEGIN RSA私钥-----...- ----结束RSA私钥-----“东西,就像AWS文章所说的那样。两者都上传但都不起作用。
- 更改链文件中证书的顺序会导致上传器工具出现无效错误。
- 不包括证书链,但这显然违背了我需要的cloudfront。
- 使用我原来的example.key文件而不是
openssl rsa
编码的PEM文件。这会从上传工具产生错误。此文件的格式为“----- BEGIN PRIVATE KEY -----...----- END PRIVATE KEY -----”
事实证明,我的错误只是我的证书大小太长。最大长度是2048,而我的是4096!我通过阅读Having trouble associated SSL cert with Amazon Cloudfront中的类似问题找到了我的问题
我猜这就是晦涩的“无效”意味着什么。我真的希望有更多的验证更好的错误消息!!!!
我也遇到了这个错误,但事实证明我还需要从发行者上传证书链。这是我运行的最后一个命令。
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/
也得到了这个错误,花了更多的时间,而不是试图找出它失败的原因(密钥大小超过2048,证书链等)。
我在通过Terraform创建分发时尝试使用IAM证书(指定iam_certificate_id)。查看了用于创建分发的AWS Web界面,没有选项可以输入IAM证书ID,并且它似乎只允许ACM证书。是否曾经存在IAM证书(如Terraform aws_cloudfront_distribution包含它),但现在已被删除(在AWS控制台上不可用)?
当使用ACM证书而不是IAM证书时,它对我来说很好。
以上是关于无法为Cloudfront制作有效的IAM SSL证书的主要内容,如果未能解决你的问题,请参考以下文章
CloudFront 后面的 API Gateway 不支持 AWS_IAM 身份验证吗?