为什么我不能为我的 CloudFront 分配选择自定义 SSL/TLS 证书?
我想在设置我的 Amazon CloudFront 分配时使用自定义 SSL/TLS 证书,但我无法选择它。
简短描述
在以下情况下,您可能看不到适用于 CloudFront 分配的自定义 SSL/TLS 证书选项:
- 您的证书存储在不同的 AWS 区域。
- AWS Certificate Manager (ACM) 证书验证失败。
- 证书已过期。
- 您没有所需的 AWS Identity and Access Management (IAM) 权限来查看或选择证书。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
检查您的证书配置
根据您的 CloudFront 分配配置执行以下故障排除操作。
ACM 证书
如果您使用的是从 ACM 请求的证书或导入到 ACM 的证书,请确认您的证书符合以下要求:
- 要将 ACM 证书分配给 CloudFront 分配,请在美国东部(弗吉尼亚州北部)区域请求或导入该证书。如果您使用 ACM 控制台,请在申请或导入证书之前检查导航栏以确认选择了美国东部(弗吉尼亚州北部)。
**注意:**将 ACM 证书分配给 CloudFront 分配后,CloudFront 将该证书分发到 CloudFront 分配的价格等级的所有边缘站点。 - 使用 DNS 验证或电子邮件验证来验证您的 ACM 证书后,确认证书的状态为 Issued(已颁发)。
**注意:**状态必须为 Issued(已颁发),您才能将证书分配给 CloudFront 分配。 - 您可以使用自签名证书仅验证现有的 CNAME 记录,不能验证新的 CNAME 记录。CloudFront 支持与 Mozilla 相同的证书颁发机构。有关详细信息,请参阅使用备用域名的要求。
- 对于导入的证书,请确认该证书符合导入证书的先决条件。有关详细信息,请参阅如何将第三方颁发的 TLS/SSL 证书导入 ACM?
- 使用 CloudFront 支持的 RSA 证书密钥大小,例如 1024 位、2048 位、3072 位或 4096 位。
有关详细信息,请参阅为什么我无法找到为我的负载均衡器或 CloudFront 分配导入的证书?
证书已导入到 IAM
如果您已将 SSL/TLS 证书导入到 IAM,请确认您使用了正确的 CloudFront 路径。运行以下 upload-server-certificate AWS CLI 命令,以使用特定 CloudFront 路径上传您的证书:
aws iam upload-server-certificate --server-certificate-name CertificateName --certificate-body file://public_key_certificate_file.pem --private-key file://privatekey.pem --certificate-chain file://certificate_chain_file.pem --path /cloudfront/DistributionName/
**注意:**将 CertificateName 替换为您的证书名称,将 file://public_key_certificate_file 替换为您的公钥,将 file://privatekey.pem 替换为您的私钥。另外,将 file://certificate_chain_file 替换为您的证书链,将 DistributionName 替换为您的 CloudFront 分配名称。
如果您未使用 CloudFront 路径上传证书,请运行以下 update-server-certificate 命令使用该路径更新您的证书:
aws iam update-server-certificate --server-certificate-name CertificateName --new-path /cloudfront/DistributionName/
**注意:**将 CertificateName 替换为您的证书名称,将 DistributionName 替换为您的 CloudFront 分配名称。向 CloudFront 分配添加证书后,分配状态将从 Deployed(已部署)更改为 In Progress(正在进行)。CloudFront 将更改部署到所有边缘站点后,分配状态将更改回 Deployed(已部署)。典型的部署时间为 5 分钟。
检查您的证书权限
在将证书从 ACM 或 IAM 分配给 CloudFront 分配时,确认您拥有所需的权限。
您用于分配证书的 IAM 用户或角色必须具有以下权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "acm:ListCertificates", "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudfront:ListDistributions", "cloudfront:ListStreamingDistributions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudfront:List*", "cloudfront:Get*", "cloudfront:Update*" ], "Resource": "arn:aws:cloudfront::account-id:distribution/distribution-id" }, { "Effect": "Allow", "Action": "iam:ListServerCertificates", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GetServerCertificate", "iam:UpdateServerCertificate" ], "Resource": "arn:aws:iam::account-id:server-certificate/certificate-name-with-path" } ] }
其他故障排除
如果您已将 SSL/TLS 证书导入到 IAM,请确认证书链的顺序正确且证书未过期。有关详细信息,请参阅如何上传 SSL 证书并将其导入 IAM?
要在 CloudFront 分配中使用多个域名,请申请或生成包含所有必需域名的单个 SSL/TLS 证书。默认情况下,ACM 支持每个证书最多 100 个域。
**注意:**无法将多个 SSL/TLS 证书关联到单个 CloudFront 分配。
相关信息
如何使用 ACM 解决 CloudFront 分配域名错误?"InvalidViewerCertificate"
- 语言
- 中文 (简体)

