排查分配问题
使用此处的信息,诊断和修复您使用 Amazon CloudFront 分配设置网站或应用程序时可能遇到的证书错误、拒绝访问或其他常见问题。
主题
当我尝试添加备用域名时,CloudFront 返回 InvalidViewerCertificate 错误
如果在您尝试向分配中添加备用域名(CNAME) 时,CloudFront 返回 InvalidViewerCertificate
错误,请查看以下信息来帮助排查问题。此错误可能指示必须先解决以下问题之一,然后才能成功添加备用域名。
以下错误按照 CloudFront 检查添加备用域名的授权的顺序列出。这可以帮助您诊断问题,因为基于 CloudFront 返回的错误,您可以辨别哪些验证检查已成功完成。
- 没有证书附加到您的分配。
要添加备用域名 (CNAME),您必须在分配中附加可信且有效的证书。请检查要求,获得符合要求的有效证书,将其附加到您的分配中,然后重试。有关更多信息,请参阅 使用备用域名的要求。
- 在您附加的证书的证书链中有过多的证书。
一个证书链中最多只能有五个证书。减少链中的证书数,然后重试。
- 证书链包含的一个或多个证书对于当前日期无效。
已添加的证书的证书链中有一个或多个证书无效,可能是证书迄今尚未生效,或者证书已过期。检查证书链中证书的 Not Valid Before(生效日期)和 Not Valid After(到期日期)字段,确保基于您所列日期所有证书都有效。
- 附加的证书未获得信任的证书颁发机构 (CA) 的签字。
您附加到 CloudFront 以证明备用域名的证书不能是自签名证书。必须获得信任的 CA 的签名。有关更多信息,请参阅 使用备用域名的要求。
- 您附加的证书的格式不正确
证书中包括的域名和 IP 地址的格式以及证书本身的格式都必须遵循证书标准。
- 存在 CloudFront 内部错误。
CloudFront 受到内部问题阻止,无法对证书进行验证。在这种情况下,CloudFront 将返回 HTTP 500 状态代码,并且指出附加证书时 CloudFront 发生内部问题。等待几分钟,然后重试以在证书中添加备用域名。
- 附加的证书不涵盖您尝试添加的备用域名。
对于每个您要添加的备用域名,CloudFront 要求您附加来自信任的证书颁发机构 (CA) 且覆盖该域名的有效的 SSL/TLS 证书,以验证您有权使用它。请更新您的证书,以包含涵盖您尝试添加的 CNAME 的域名。有关在域名中使用通配符的更多信息和示例,请参阅使用备用域名的要求。
我无法查看我的分配中的文件
如果您无法查看 CloudFront 分配中的文件,请参阅下列主题了解一些常见的解决方案。
您是否同时注册了 CloudFront 和 Amazon S3?
要将 Amazon CloudFront 与 Amazon S3 源配合使用,您必须单独注册 CloudFront 和Amazon S3。有关注册 CloudFront 和 Amazon S3 的更多信息,请参阅设置。
您的 Amazon S3 存储桶和对象权限的设置是否正确?
如果您将 CloudFront 和 Amazon S3 源结合使用,对象的原始版本存储在 S3 存储桶中。将 CloudFront 与 Amazon S3 结合使用的最简单方法是让您的所有对象在 Amazon S3 中都可以公开读取。为此,您必须为上传到 Amazon S3 中的每个对象明确启用公共读取权限。
如果您的内容不是公开可读,则必须创建 CloudFront 源访问控制 (OAC),以供 CloudFront 访问。有关 CloudFront 源访问控制的更多信息,请参阅限制对 Amazon S3 源的访问。
对象属性和存储桶属性是独立的。您必须明确授予对 Amazon S3 存储桶中每个对象的特权。对象不会从存储桶继承属性,对象属性必须独立于存储桶进行设置。
您的备用域名 (CNAME) 配置正确吗?
如果您的域名已经具有现有的 CNAME 记录,请更新此记录或用指向分配的域名的新记录替换它。
此外,确保您的 CNAME 记录指向您分配的域名,而不是 Amazon S3 存储桶。您可确认您的 DNS 系统中的 CNAME 记录指向您分配的域名。要做到这一点,请使用 DNS 工具,如 dig。
以下示例显示对名为 images.example.com
的域名的 dig 请求和响应的相关部分。在 ANSWER SECTION
下,请参阅包含 CNAME
的行。如果别名记录 (CNAME) 右侧上的值是您的 CloudFront 分配域名,则您域名的 CNAME 记录设置正确。如果是您的 Amazon S3 源服务器或一些其他域名,则别名记录 (CNAME) 设置不正确。
[prompt]> dig images.example.com ; <<> DiG 9.3.3rc2 <<> images.example.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917 ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;images.example.com. IN A ;; ANSWER SECTION: images.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net. ... ...
有关别名记录 (CNAME) 的更多信息,请参阅 通过添加备用域名 (CNAME) 使用自定义 URL。
您为 CloudFront 分配引用了正确的 URL 吗?
请确保您引用的 URL 使用 CloudFront 分配的域名(或 CNAME),而不是 Amazon S3 存储桶或自定义源。
您需要帮助来解决自定义源的问题吗?
如果您需要 Amazon 帮助您解决自定义源的问题,我们可能需要检查您请求中的 X-Amz-Cf-Id
标头条目。如果您没有记录这些条目,您将来可能需要它。有关更多信息,请参阅使用 Amazon EC2(或其他自定义源)。如需进一步帮助,请访问 Amazon 支持中心
错误消息:CloudFront 正在使用证书:<certificate-id>
问题:当您尝试从 IAM 证书存储区中删除 SSL/TLS 证书时收到消息“CloudFront 正在使用证书: <certificate-id>”。
解决方案:每个 CloudFront 分配必须与默认 CloudFront 证书或自定义 SSL/TLS 证书相关联。在删除 SSL/TLS 证书前,必须轮换证书(将当前的自定义 SSL/TLS 证书替换为其他自定义 SSL/TLS 证书),或从使用自定义 SSL/TLS 证书恢复为使用默认 CloudFront 证书。要修复这一问题,请完成以下过程之一中的步骤: