如何解决AWS CloudFront SSL证书不存在

enxuqcxy  于 2023-02-13  发布在  其他
关注(0)|答案(3)|浏览(244)

当我在CloudFormation中将IamCertificateId属性添加到AWS::CloudFront::Distribution时,出现以下错误:
资源处理程序返回消息:"提供的请求无效:指定的SSL证书不存在、不在us-east-1区域中、无效或不包括有效的证书链。"
我确实通过运行aws iam list-server-certificatescommand并确保IamCertificateId属性的值与证书的the ASCA prefixed IAM ID匹配来确保证书存在。
我忽略了us-east-1区域消息,因为IAM是一个全球服务,我没有使用ACM证书。另外,我在中国cn-north-1区域操作,以防有什么不同。
我非常肯定证书是"有效的",因为我假设如果它是畸形的,AWS不会允许我使用upload the certificate with aws iam upload-server-certificate
因此,错误消息并没有指向解决方案,我可能错过了什么呢?

3ks5zfa0

3ks5zfa01#

您的证书可能有效,但可能对 CloudFront 无效。错误消息没有指出的是,您可以在the docs for uploading a certificate中找到隐藏的内容:

**注意:**如果您要上载专门用于Amazon CloudFront发行版的服务器证书,则必须使用path参数指定路径。该路径必须以/cloudfront开始,并且必须包含一个尾随斜杠(例如,/cloudfront/test/)。

因此,请确保在aws iam upload-server-certificate命令中添加--path "/cloudfront/"

mrphzbgm

mrphzbgm2#

我遇到了这个问题,这是因为我的构建系统不小心在Windows上切换了一个斜线/(但它在Linux上工作)。

"CloudfrontDistribution": {
            "Type": "AWS::CloudFront::Distribution",
            "DependsOn": "CloudfrontS3LogsBucket",
            "Condition": "DRDeactivated",
            "Properties": {
                "DistributionConfig": {
<--- snip snip -->
                    "ViewerCertificate": {
                        "AcmCertificateArn": "arn:aws:acm:us-east-1:0123456789:certificate\\XXXX-XXXX-XXXX-XXXX",
                        "SslSupportMethod": "sni-only",
                        "MinimumProtocolVersion": "TLSv1.2_2019"
                    }
                }
            }
        }
    },

上面的云形成代码中的AcmCertificateArn是错误的。

"AcmCertificateArn": "arn:aws:acm:us-east-1:0123456789:certificate\\XXXX-XXXX-XXXX-XXXX",

它应该是:

"AcmCertificateArn": "arn:aws:acm:us-east-1:0123456789:certificate/XXXX-XXXX-XXXX-XXXX",
ar5n3qh5

ar5n3qh53#

我在尝试将AWS证书附加到CloudFront发行版时遇到了同样的问题。
这个问题与AWS证书是在eu-west-1地区提供的这一事实有关。
AWS明确表示:
要在AWS证书管理器(ACM)中使用证书以要求查看器和CloudFront之间使用HTTPS,请确保在美国东部(北弗吉尼亚州)地区(us-east-1)请求(或导入)证书。
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-requirements.html

这是我的补救办法

我所要做的就是在美国东部(N. Virginia)地区(us-east-1)提供另一个AWS证书,然后在eu-west-1地区的CloudFront分发中引用它。

相关问题