证书管理工具问题排查

本页面介绍了您在使用 Certificate Manager 时可能会遇到的最常见错误。此外,还提供了诊断和解决这些错误的步骤。

如需有关解决与 TLS (SSL) 证书相关的问题的帮助,请参阅排查 SSL 证书问题。

对 Google 管理的证书进行问题排查

对于由 Google 管理的证书,您可以检查证书资源的状态以及与证书关联的每个网域的授权状态。

托管式证书状态

检查托管式证书状态 (managed.state):

gcloud certificate-manager certificates describe CERTIFICATE_NAME \
    --location=LOCATION \
    --format="get(managed.state)"

替换以下内容:

  • CERTIFICATE_NAME:证书的名称。
  • LOCATION:目标 Google Cloud 位置。默认位置是 global。

证书状态的值如下:

州 说明
PROVISIONING

Certificate Manager 正在预配或续订证书。

从 DNS 和负载均衡器配置的更改传播到整个互联网开始,预配 Google 管理的证书最多可能需要 60 分钟。如果证书保持为 PROVISIONING 状态,请查看 managed.provisioningIssue 或 managed.authorizationAttemptInfo 字段,了解更多信息。

ACTIVE 证书已预配。在您将其与证书映射条目相关联并将其附加到目标代理或负载均衡器后,它就可以传送流量了。
FAILED

多次证书预配尝试或续订失败,Certificate Manager 已停止预配证书。 Certificate Manager 不会在此状态下重试预配。

如需解决此问题,请更正底层 DNS 或负载均衡器配置问题,删除失败的证书,然后创建新的代管式证书资源。

如需详细了解失败原因,请查看 managed.provisioningIssue 或 managed.authorizationAttemptInfo 字段。

网域授权尝试状态

检查与证书关联的网域的授权尝试状态:

gcloud certificate-manager certificates describe CERTIFICATE_NAME \
    --location=LOCATION \
    --format="get(managed.authorizationAttemptInfo)"

替换以下内容:

  • CERTIFICATE_NAME:证书的名称。
  • LOCATION:目标 Google Cloud 位置。默认位置是 global。

与证书关联的每个网域都具有以下状态 (managed.authorizationAttemptInfo.state) 之一:

州 说明
AUTHORIZING Certificate Manager 正在为此网域预配证书并授权该网域。
AUTHORIZED 网域已获授权。如果证书包含多个网域,则只有在所有网域都达到 AUTHORIZED 状态后,系统才会预配证书并将其状态更改为 ACTIVE。
FAILED 尝试授权域名失败。此失败会导致 Certificate Manager 无法颁发托管式证书。如需诊断该问题,请检查失败网域的 failureReason、details 和 troubleshooting 字段。

网域授权失败原因

当网域的授权尝试状态为 FAILED 时,managed.authorizationAttemptInfo.failureReason 字段会指明失败原因。下表介绍了可能的值:

失败原因 说明
CONFIG

您的 DNS 或负载均衡器存在此网域的配置问题。

如需了解详情,请参阅详细的问题排查表。

CAA

由于 CAA 记录问题(例如明确的 CAA 限制或未能检查网域的 CAA 记录),证书预配失败。

如需解决此问题,请确保您的 DNS 区域配置允许证书授权机构为您的网域颁发证书。对于每个项目的 DNS 授权(包括所有区域级证书),Certificate Manager 仅使用 Google Trust Services (pki.goog),因此请确保您的 CAA 记录允许 pki.goog。对于其他 DNS 授权和负载均衡器授权,Certificate Manager 可以同时使用 Google Trust Services (pki.goog) 和 Let's Encrypt (letsencrypt.org)。如需了解详情,请参阅指定可以颁发 Google 管理的证书的 CA。

RATE_LIMITED

请求受到证书授权机构或内部系统的限制,例如 Let's Encrypt 对每个注册网域的证书数量的每周限制。

如需解决此问题,请等待速率限制到期。请勿在不同项目中请求不必要的重复证书。

与 Certificate Manager 证书相关的错误

本部分提供了与 Google 管理的 Certificate Manager 证书的 authorizationAttemptInfo 字段相关的错误的问题排查信息。仅当以下字段具有这些值时,错误才会显示在 managed.authorizationAttemptInfo.troubleshooting 部分中:

  • managed.authorizationAttemptInfo.state = FAILED
  • managed.authorizationAttemptInfo.failureReason = CONFIG

如需详细了解这些错误以及如何解决这些错误,请参阅下表:

错误 说明
CNAME_MISMATCH 仅当预期 CNAME 记录的值与解析的 CNAME 记录的值不匹配时,DNS 授权才会发生此错误。

如需解决此问题,请将预期的 CNAME 记录添加到 DNS 配置中。如需了解详情,请参阅将 CNAME 记录添加到您的 DNS 配置部分。

RESOLVED_TO_NOT_SERVING 如果网域包含指向特定 IP 地址的 DNS A 和 AAAA 记录,而证书未附加到任何负载均衡器,则会发生此错误。

此错误仅适用于具有负载均衡器授权的证书。 只有在配置负载均衡器后,您才能使用负载均衡器授权预配证书。

如需解决此问题,请更新网域的 DNS A 和 AAAA 记录,使其指向负载均衡器的 IP 地址。从网域的 DNS A 和 AAAA 记录中解析的 IP 地址存储在 ips.resolved 参数中,附加此证书的负载均衡器的 IP 地址存储在 ips.serving 参数中。

网域的 DNS A 和 AAAA 记录必须仅指向负载均衡器的 IP 地址。例如,如果 DNS A 记录指向负载均衡器的 IP 地址,但 DNS AAAA 记录指向其他 IP 地址,则会发生 RESOLVED_TO_NOT_SERVING 错误。

您还必须确保网域的 DNS A 和 AAAA 记录在全球范围内正确且一致地解析。如需了解详情,请参阅多视角网域验证失败部分。

NO_RESOLVED_IPS 当网域不包含任何 DNS A 和 AAAA 记录时,会发生此错误。

此错误仅适用于具有负载均衡器授权的证书。 只有在配置负载均衡器后,您才能使用负载均衡器授权预配证书。

如需解决此问题,请为此网域添加 DNS A 和 AAAA 记录,并确保这些记录指向目标 HTTPS 代理或媒体 CDN 边缘缓存服务的 IP 地址。

您还必须确保网域的 DNS A 和 AAAA 记录在全球范围内正确且一致地解析。如需了解详情,请参阅多视角网域验证失败部分。

RESOLVED_TO_SERVING_ON_ALT_PORTS 当包含 DNS A 和 AAAA 记录的网域指向附加了此证书的负载均衡器的 IP 地址,但这些 IP 地址上的端口 443 未打开时,就会发生此错误。

此错误仅适用于具有负载均衡器授权的证书。 只有在配置负载均衡器后,您才能使用负载均衡器授权预配证书。

如需解决此问题,请确保附加了证书的负载均衡器正在监听端口 443。ips.serving_on_alt_ports 参数存储未打开端口 443 的负载均衡器 IP 地址列表。

您还必须确保网域的 DNS A 和 AAAA 记录在全球范围内正确且一致地解析。如需了解详情,请参阅多视角网域验证失败部分。

CERTIFICATE_NOT_ATTACHED 当证书未附加到负载均衡器时,会发生此错误。如需解决此问题,请确保证书已附加到负载均衡器。如需了解详情,请参阅将证书部署到负载均衡器部分。

如果证书属于附加到目标 HTTPS 代理的证书映射,但该代理未附加到转发规则,也会发生此错误。如需解决此问题,请将目标 HTTPS 代理附加到适当的转发规则。如需了解详情,请参阅目标代理概览和转发规则概览。

此错误仅适用于具有负载均衡器授权的证书。 只有在配置负载均衡器后,您才能使用负载均衡器授权预配证书。

从目标代理中分离证书映射时出错

从目标代理分离证书映射时,您会收到以下错误:

"There must be at least one certificate configured for a target proxy."

除了您尝试分离的证书映射中指定的证书之外,如果没有其他证书分配给目标代理,就会发生此错误。如需解除映射,请先直接向代理分配一个或多个证书。

将证书映射条目与证书相关联时出错

将证书映射条目与证书相关联时,您会收到以下错误:

"certificate can't be used more than 100 times"

当您尝试将证书映射条目与已关联 100 个证书映射条目的证书相关联时,会发生此错误。如需解决此问题,请执行以下操作:

  • 对于 Google 管理的证书,请创建另一个证书。将新的证书映射条目与此新证书相关联,并将新证书附加到负载均衡器。
  • 对于自行管理的证书,请使用新名称重新上传证书。 将新的证书映射条目与此新证书相关联,并将新证书附加到负载均衡器。

与 CA Service 实例颁发的证书相关的问题

本部分列出了在使用 Certificate Manager 部署由 CA Service 实例颁发的 Google 管理的证书时可能遇到的最常见错误及其可能的原因。

如果您收到 Failed to create Certificate Issuance Config resources 错误,请检查以下各项:

  • 生命周期。有效证书生命周期值为 21 到 30 天。
  • 轮替窗口百分比。有效的轮替窗口百分比为 1% 到 99%。您必须设置相对于证书生命周期的轮替窗口百分比,以确保证书在证书颁发至少 7 天之后且在到期前至少提前 7 天进行续订。
  • 密钥算法。有效的密钥算法值为:RSA_2048 和 ECDSA_P256。
  • CA 池。CA 池不存在或配置有误。 CA 池必须至少包含一个已启用的 CA,并且调用方必须对目标Google Cloud 项目具有 privateca.capools.use 权限。对于区域级证书,必须在 CA 池所在的位置创建证书颁发配置资源。

如果您收到 Failed to create a managed certificate 错误,请检查以下各项:

  • 您在创建证书时指定的证书颁发配置资源存在。
  • 调用方对您在创建证书时指定的证书颁发配置资源具有 certificatemanager.certissuanceconfigs.use 权限。
  • 证书与证书颁发配置资源位于同一位置。

如果您收到 Failed to renew certificate 或 Failed to provision certificate 错误,请检查以下各项:

  • Certificate Manager 服务账号对用于此证书的证书颁发配置资源中指定的 CA 池具有 roles/privateca.certificateRequester 权限。

    使用以下命令检查目标 CA 池的权限:

    gcloud privateca pools get-iam-policy CA_POOL
    --location REGION
    

    替换以下内容:

    • CA_POOL:目标 CA 池的完整资源路径和名称
    • REGION:目标 Google Cloud 区域
  • 证书颁发政策有效。如需了解详情,请参阅与颁发政策限制相关的问题。

与颁发政策限制相关的问题

如果 Certificate Manager 不支持证书颁发政策对证书所做的更改,则证书预配会失败,并且代管式证书的状态会更改为 Failed。如需解决此问题,请确认以下事项:

对于上述问题,由于 CA Service 已颁发证书,因此系统会根据 CA Service 价格向您收费。

如果您收到错误 Rejected for issuing certificates from the configured CA Pool,则表示证书颁发政策已屏蔽请求的证书。如需解决此错误,请检查以下各项:

对于上述问题,由于 CA Service 尚未颁发证书,因此 CA Service 不会向您收费。

与 IAP 主机名匹配相关的问题

如果您在使用 Certificate Manager 和 Identity-Aware Proxy (IAP) 时意外收到错误 The host name provided does not match the SSL certificate on the server,请检查您使用的证书是否对该主机名有效。此外,列出您在证书映射中配置的证书映射条目。您打算与 IAP 搭配使用的每个主机名或通配符主机名都必须具有专用条目。如果缺少主机名的证书映射条目,请创建证书映射条目。

在证书选择期间回退到主证书映射条目的请求始终会被 IAP 拒绝。

多视角网域验证失败

Google Cloud 会定期向证书授权机构 (CA) 请求 Google 管理的证书,以便对其进行续订。Google Cloud 用于续订证书的 CA 使用一种多视角网域验证方法,称为多视角颁发确证 (MPIC)。 在此过程中,证书授权机构会通过检查网域的 DNS 设置来验证网域控制,如果是负载均衡器授权,则会尝试与网域 IP 地址后面的服务器联系。 这些验证会从互联网上的多个视角进行。如果验证流程失败,由 Google 管理的证书将无法续订。因此,您的负载均衡器会向客户端提供已过期的证书,导致浏览器用户遇到证书错误,API 客户端遇到连接失败。

为了防止针对配置有误的 DNS 记录出现多视角网域验证失败,请注意以下事项:

  • 您的网域和任何子网域的 DNS A 记录 (IPv4) 和 DNS AAAA (IPv6) 记录仅指向与负载均衡器的转发规则关联的 IP 地址。如果记录中存在任何其他地址,可能会导致验证失败。
  • CA 会对 DNS 记录进行验证,并从多个位置查询 DNS 记录。确保您的 DNS 提供商对所有全球网域验证请求的响应一致。
  • 使用 GeoDNS(根据请求位置返回不同的 IP 地址)或基于位置的 DNS 政策可能会导致响应不一致,并导致验证失败。如果您的 DNS 提供商使用 GeoDNS,请停用它,或者确保所有区域都返回相同的负载均衡器的 IP 地址。
  • 如果您使用负载均衡器授权方法来预配 Google 管理的证书,则必须在 DNS 配置中明确指定负载均衡器的 IP 地址。 中间层(例如 CDN)可能会导致难以预料的状况。IP 地址必须可直接访问,且请求路径中不需要任何重定向、防火墙或 CDN。如需了解详情,请参阅本文档中的 CDN 后端的负载均衡器部分。
  • 我们建议您使用自己选择的 DNS 全球传播检查工具,以验证所有相关 DNS 记录是否在全球范围内正确且一致地解析。

验证配置更改

配置 DNS 记录后,您可以通过创建新证书并将其与现有证书一起连接到负载均衡器,来验证这些记录是否正确。此步骤会强制立即与 CA 进行证书配置检查,以便您在几分钟内验证配置更改。否则,自动续订现有的证书可能需要几天或几周的时间,从而导致您的设置不确定。

如果证书状态变为 ACTIVE,则表示证书已颁发,从而确认您的 DNS 配置正确无误。此时,我们建议您移除之前的证书,以免同一网域有两个单独的证书。此过程不会中断流向负载均衡器的流量。

新证书可用作验证工具 - 创建证书可确认使用 MPIC 的多视角网域验证是否适用于您的设置。

CDN 后端的负载均衡器

对于已启用 CDN 的负载均衡器,请求路径中的某些第三方 CDN 提供商可能会导致验证请求失败。如果 CDN 提供商正在主动代理 HTTP(S) 流量,则可能会发生这种情况。

在这种情况下,我们建议您使用 DNS 授权方法来预配 Google 管理的证书。后一种方法不需要 CA 与您的负载均衡器联系。

后续步骤