跳至内容

为什么我不能为我的 CloudFront 分配选择自定义 SSL/TLS 证书?

2 分钟阅读
0

我想在设置我的 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 的证书,请确认您的证书符合以下要求:

有关详细信息,请参阅为什么我无法找到为我的负载均衡器或 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"

在 CloudFront 中使用 SSL/TLS 证书的要求