如何在上传到Amazon / CloudFront时验证SSL证书链?

时间:2017-11-29 00:02:40

标签: amazon-web-services ssl https ssl-certificate amazon-cloudfront

我们正在使用cloudfront通过自定义域投放图片。

http://images.example.com/fubar.png

我们希望能够使用SSL访问它们,例如https://images.example.com/fubar.png

我们为*.example.com提供了通配符SSL证书(由Godaddy发布),我使用 AWS证书管理器上传证书,私钥和钥匙串。由于*.example.com似乎已发布(根据证书管理员),上传似乎已成功。

然后按照Update the CloudFront Distribution的说明操作,我添加了images.example.com,选择自定义SSL证书选项,并确保分发状态 已启用。当我点击是,编辑按钮时,出现以下错误:

com.amazonaws.services.cloudfront.model.InvalidViewerCertificateException: The specified SSL certificate doesn't exist, isn't in us-east-1 region, isn't valid, or doesn't include a valid certificate chain. (Service: AmazonCloudFront; Status Code: 400; Error Code: InvalidViewerCertificate; Request ID: a62cf849-d495-11e7-94d9-673e2e2905b1)

我已在其他地方成功使用此SSL证书。如果它有帮助,我最初使用Windows机器创建此证书以发出请求,然后从Godaddy下载证书。我不再能够访问此下载,但我可以访问Windows Server上的PFX文件。我拿这个PFX文件(有私钥)(名为SSLWildcard.pfx)并使用OpenSSL获取证书和私钥。我使用了以下命令:

openssl pkcs12 -in SSLWildcard.pfx -nocerts -out SSLWildcard.key
openssl rsa -in SSLWildcard.key -out SSLWildcard-decrypted.key
openssl pkcs12 -in SSLWildcard.pfx -clcerts -nokeys -out SSLWildcard.crt

我使用了CRT和KEY文件的内容(我使用了解密的密钥文件)和GoDaddy的公共证书链文件gd_bundle-g2-g1.crt。我尝试过使用GoDaddy's public repository中的各种证书(和组合),但我只是在猜测。关于我做错了什么的想法?

1 个答案:

答案 0 :(得分:0)

错误消息有一个线索:在使用cloudfront证书时,它必须位于us-east-1。

您没有提及您上传证书的区域,但如果您要部署到Cloudfront,请确保它位于我们的东方1区。

如果证书在us-east-1中,还有另外一条线索:

Options Load URL

如果您使用的是配置为公共网络托管的S3存储桶,则无法通过https在cloudfront和s3之间进行通信 - 它必须是http。有关详细信息,请参阅here