无法为Cloudfront制作有效的IAM SSL证书

时间:2014-08-20 22:54:45

标签: openssl ssl-certificate amazon-cloudfront pem amazon-iam

我通过运行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.

我尝试过修改。

  1. 包括但不包括链中的根证书。两者都上传但都不起作用。
  2. 我尝试从我的PEM文件的头部删除"模数"," privateExponent"," prime1"等,以便它只包含& #34; -----开始RSA私钥-----...----- END RSA私钥-----"像AWS文章建议的东西。两者都上传但都不起作用。
  3. 更改我的链文件中的证书顺序会导致上传工具出现无效错误。
  4. 不包括证书链,但这显然违背了我需要的cloudfront。
  5. 使用我原来的example.key文件而不是openssl rsa编码的PEM文件。这会从上传工具产生错误。此文件的格式为" ----- BEGIN PRIVATE KEY -----...----- END PRIVATE KEY -----"

3 个答案:

答案 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证书时,它对我来说很好。