Cloudfront 备用域名 InvalidViewerCertificateException

Posted

技术标签:

【中文标题】Cloudfront 备用域名 InvalidViewerCertificateException【英文标题】:Cloudfront Alternate Domain Names InvalidViewerCertificateException 【发布时间】:2020-09-11 00:31:17 【问题描述】:

我的设置

EC2:应用程序 域名注册商:namecheap DNS:路由 53

我使用 EC2 来托管我的应用程序,使用 AWS 路由 53 来引导 url,并使用 cloudfront 来获取我的应用程序的静态文件。现在云端正在使用不友好的域名*.cloudfront.net

我在我的 EC2 中使用 certbot 来提供 SSL 连接。

当我尝试更改云端域名时,我使用由 ACM(AWS 证书管理器)生成的 Custom SSL Certificate。我遇到了错误:

com.amazonaws.services.cloudfront.model.InvalidViewerCertificateException: The certificate that is attached to your distribution doesn't cover the alternate domain name (CNAME) that you're trying to add. For more details, see: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html#alternate-domain-names-requirements (Service: AmazonCloudFront; Status Code: 400; Error Code: InvalidViewerCertificate; Request ID: 2d39c685-bf17-4d24-9c4b-82955daa878f; Proxy: null)

ACM 证书是在 N.Virginia 生成的,这很好,因为我的 EC2 托管在那里。我使用*.example.com 生成了证书并通过了验证。

我不知道如何解决这个问题。有什么建议吗?

【问题讨论】:

您好,您能否提供有关 ACM 证书的更多信息?是 ACM 生成的还是你上传的?是单域还是多域? @mokugo-devops 它由 ACM 生成。单域:*.example.com 好的,您使用的域是 *.example.com,而不是 example.com? 没错。基于 ACM:Type the fully qualified domain name of the site you want to secure with an SSL/TLS certificate (for example, www.example.com). Use an asterisk (*) to request a wildcard certificate to protect several sites in the same domain. For example: *.example.com protects www.example.com, site.example.com and images.example.com. @mokugo-devops 这不是我的问题,必须等待 OP 确认其是否完全解决。但这似乎是事实。 【参考方案1】:

这将是由于您配置的 ACM 证书使用的域名无效。

因为生成的 ACM 证书是 *.example.com,所以只能使用 1 级深度子域。

进一步解释:

www.example.com 是 ACM 证书的有效子域 foo.bar.example.com 不是 ACM 证书的有效子域 example.com 对此 ACM 证书无效,因为它是根域(并且未在 SSL 上引用)。

因为它是在ACM中生成的,所以只要符合following conditions,我们就可以验证这个证书是兼容的。

要使 SSL 用于根域和子域,它必须同时包含 example.com 和 *.example.com 才能在 CloudFront 中正常工作。

【讨论】:

以上是关于Cloudfront 备用域名 InvalidViewerCertificateException的主要内容,如果未能解决你的问题,请参考以下文章

AWS Cloudfront 备用域名 403 被禁止

Cloudfront 为备用域名返回 502

Amazon Cloudfront 允许所有备用域名 (CNAMES)

Cloudfront 阻止缓存整个站点

如何将 CloudFront 和 S3 与备用域一起使用?

通过 API 将域添加到 AWS Cloudfront 分发