Certificate Manager 的运作方式

Certificate Manager 使用灵活的映射机制,可让您精细控制可分配的证书以及如何为环境中的每个网域名提供证书。该机制包括以下实体:

  • 证书
  • 证书映射
  • 证书映射条目
  • 网域授权

下图展示了负载均衡器转发规则中指定的典型目标代理的这些实体之间的关系:

Certificate Manager 实体。
Certificate Manager 实体(点击可放大)。

证书管理器支持目标 HTTPS 代理和目标 SSL 代理。如需详细了解这些代理类型之间的区别,请参阅使用目标代理

如需了解 Certificate Manager 支持的证书类型,请参阅部署概览

证书

默认情况下,“证书”是指为特定域名或域名通配符颁发的 X.509 传输层安全协议 (TLS) (SSL) 证书。

Certificate Manager 支持以下类型的证书:

  • Google 管理的证书 为您获取和管理
  • 自行管理的证书是您获取、预配和 续订。

当您使用受大众信任的 CA 颁发证书时,CA 会发布 Certificate Transparency 日志中记录 可公开访问这是所有公认可信 CA 采用的标准证书颁发流程的一部分,适用于 Google 管理的证书和自行管理的证书。但是,如果您使用 Certificate Authority Service 来颁发 Google 管理的证书, 证书管理器不会向 Certificate Transparency 日志。

如需了解详情,请参阅证书透明度

如需了解如何使用 Certificate Manager 部署证书, 请参阅部署概览

Google 管理的证书

为网站和应用管理 Google 管理的 TLS (SSL) 证书是一项复杂且耗时的工作,通常需要手动配置和定期维护。证书管理器是一项服务,旨在通过提供集中式平台来帮助您简化此流程。您可以 将颁发和续用证书的责任委托给 证书管理器,省出时间专心处理 关键任务。

您可以使用基于负载均衡器或基于 DNS 的授权来验证相关网域的所有权。Certificate Manager 支持 RSA Google 管理的证书。

默认情况下,Google CA 会颁发 Google 管理的证书。在颁发或续订新的 Google 管理型证书时,系统会使用新生成的私钥。如果您 无法从 Google CA 获得特定网域的证书, 证书管理器会回退到 Let's Encrypt CA。例如,Google CA 可能会拒绝为该网域颁发证书,或者您的 CA 授权记录明确禁止 Google CA 为该网域颁发证书。

不支持仅在客户端进行身份验证。

如需了解如何限制可为您的网域颁发证书的 CA,请参阅指定可颁发您的 Google 管理的证书的 CA

请注意,Google 管理的区域级证书仅支持基于 DNS 的授权,并从 Google CA 获取证书。

由 Certificate Authority Service 颁发的 Google 管理的证书

如果您想使用自己的信任链,而不是依赖 Google 批准的信任链 来颁发证书,您可以将 Certificate Manager 使用 证书授权机构服务 证书颁发者。如需详细了解 CA 池,请参阅 创建 CA 池

自行管理的证书

如果您的业务要求不允许您使用 Google 管理的证书,您可以上传外部 CA 颁发的证书及其关联的密钥。您负责手动签发和续期 自行管理的证书

通过证书管理器,您还可以 自行管理的证书 安全 Web 代理代理和区域级 负载平衡器

证书映射

证书映射会引用一个或多个证书映射条目,以将特定证书分配给特定主机名。证书映射条目还定义了 负载均衡器在建立客户端时遵循的选择逻辑 连接。您可以将证书映射与多个目标代理相关联 以便跨多个负载平衡器重复使用

如果客户端请求证书映射中指定的主机名,则加载 负载平衡器会提供映射到该主机名的证书。否则,负载均衡器将提供主证书。如需更多信息 请参阅证书选择逻辑

证书映射条目

证书映射条目是针对特定网域名提供的证书列表。您可以为不同的域名(例如网域或子网域)定义不同的证书组。例如,您可以上传 ECDSA 和 RSA 证书,并将它们映射到同一网域名。当客户端连接到该域名时,负载均衡器会在握手期间协商要向客户端提供的证书类型。

网域授权

借助证书管理工具,您可以证明您要为哪些网域颁发 Google 管理的证书(如下表所述)。

负载均衡器授权 DNS 授权
设置复杂性 无需额外的配置步骤或更改 DNS 配置。 需要您创建 DNS 授权,并将其相应的 CNAME 记录添加到 DNS 配置中。
网络安全 负载均衡器必须通过端口 443 从互联网完全可访问,包括证书所提供的所有网域的 DNS 配置。不适用于其他配置。 适用于高复杂性配置,例如 443 和 CDN 层。
配置速度 只有在负载均衡器完成配置之后,您才能预配证书 且正在处理网络流量 您可以在目标代理准备好处理网络流量之前预先预配证书。

了解证书管理器如何验证网域所有权 请参阅 Google 管理的证书的网域授权

证书颁发配置

证书颁发配置是一项资源,允许证书管理器使用 使用您自己的 Certificate Authority Service 实例中的 CA 池 来颁发 Google 管理的证书,而不是 Google CA 或 Let's Encrypt CA。借助该模块,您可以指定一些用于管理证书颁发和到期的参数,以及为以这种方式颁发的证书选择密钥算法。

信任配置

信任配置是表示您的公钥基础架构 (PKI) 配置的资源 ,以便在双向 TLS 身份验证场景中使用。 它封装了单个受信任证书存储区,而该受信任证书存储区会封装信任锚(可选) 一个或多个中间证书

如需详细了解双向 TLS 身份验证,请参阅 双向 TLS 身份验证

信任配置资源封装了信任库、信任锚和中间证书实体。

受信任证书存储区

信任存储区表示证书管理器中的信任密钥配置 适用于双向 TLS 身份验证场景。封装单个信任锚 以及(可选)一个或多个中间证书。

信任锚

信任锚表示可用于双向 TLS 身份验证场景的单个根证书。它封装在受信任证书存储区中。

中间证书

中间证书表示由根证书签名的单个中间证书,或封装型受信任证书存储区中引用的中间证书,以用于双向 TLS 身份验证场景。

一个或多个中间证书可以封装在信任库中,具体取决于您的 PKI 配置。指定了所有中间证书 会纳入针对每个 以及中间证书列表 。

需要列入许可名单的证书

可选:如果您需要使用自签名、已过期或其他无效的证书,或者您无权访问根证书和中间证书,则可以将该证书添加到 allowlistedCertificates 字段中的信任配置中。您无需信任库即可将证书添加到许可名单中。

将证书添加到许可名单意味着,只要证书可解析、已建立私钥所有权证明并满足针对证书 SAN 字段的限制条件,证书就会始终被视为有效。

证书选择逻辑

概括来讲,负载均衡器会按如下方式选择证书:

  1. 客户端发起握手。在此步骤中,它会向负载均衡器提供可用于完成握手的加密算法列表,以及可选的主机名。
  2. 负载均衡器选择一个证书来完成基于安全握手 位于客户端提供的主机名和已配置的证书映射上 条目。决定负载均衡器选择哪个证书的因素如下:

    • 完全匹配的主机名:如果客户端提供的主机名与预配的证书映射中的条目完全匹配,则负载均衡器会选择相应的证书。

    • 通配符主机名匹配:如果客户端的主机名与任何条目都不匹配,但与证书映射条目中的通配符主机名匹配,则负载均衡器会从该条目中选择相应的证书。例如,配置为 *.myorg.example.com 的通配符条目涵盖 myorg.example.com 网域下的第一级子网域。

    • 没有主机名匹配项且存在预配置的主证书映射条目:如果没有主机名匹配项或匹配的预配证书映射条目,负载均衡器会选择预配置的主证书映射条目。

    • 握手失败:如果负载均衡器因以下原因而找不到匹配的证书,握手会失败:

      • 客户端提供的主机名与所有已预配证书映射条目中指定的任何精确主机名或通配符主机名不匹配,或者根本不提供主机名。
      • 找不到匹配的主证书映射条目,或者如果您尚未配置主证书映射条目。

证书优先级

负载均衡器会根据以下条件在证书映射条目中选择证书:

  • 证书类型。如果连接的客户端支持更安全的 ECDSA 证书,负载均衡器会优先使用 ECDSA 证书,而不是 RSA 证书。如果客户端未指明支持 ECDSA 证书,负载均衡器会改为提供 RSA 证书。
  • 证书大小。负载均衡器会按优先级从小到大 最大。

通配符域名

以下规则适用于通配符网域名称:

  • 只有具有 DNS 授权的 Google 管理的证书和具有 CA 服务的 Google 管理的证书才支持通配符域名。具有负载均衡器授权的 Google 管理的证书不支持通配符网域名。
  • 如果 条目。例如,如果您为 www.myorg.example.com*.myorg.example.com 配置了证书映射条目,则针对 www.myorg.example.com 的连接请求始终会选择 www.myorg.example.com 的条目,即使 *.myorg.example.com 的条目也存在也是如此。
  • 通配符域名仅会匹配到一个子网域级别。对于 例如,host1.myorg.example.com 的连接请求选择了一个证书 *.myorg.example.com 的映射条目,但不是 host1.hosts.myorg.example.com 的映射条目。

Public CA

要使用证书管理器的公共 CA 功能,您必须熟悉 涉及以下概念:

  • ACME 客户端。自动证书管理环境 (ACME) 客户端是一种使用 ACME 协议的证书管理客户端。您的 ACME 客户端必须支持外部账号绑定 (EAB) 才能与公共 CA 配合使用。

  • 外部账号绑定 (EAB)。您必须绑定使用证书管理器的每个 ACME 账号 使用外部账号绑定将公共 CA 迁移到目标 Google Cloud 项目。为此,您必须为每个集群 使用关联到相应 Google Cloud 项目的 Secret 的 ACME 账号。有关详情,请参阅外部账号 绑定

Public CA 验证

当您使用 Public CA 请求证书时, 证书管理器会要求您证明您对域名的控制权 列出的所有文件您可以通过解决验证问题来证明对域名的控制权。Public CA 会在您证明自己的所有权后对域名进行授权, 对目标网域的控制权

获得所需的授权后,您可以请求仅在特定时间段内有效的证书。在此期限结束后,您必须通过解决三种质询类型之一来重新验证域名,才能继续申请证书。

验证类型

Public CA 支持以下类型的验证:

  • HTTP 质询。这项挑战涉及到 HTTP 服务器(端口 80)上的位置,以便 Public CA 进行检索 进行验证。如需了解详情,请参阅 HTTP 质询

  • TLS-Application Layer Protocol Negotiation (ALPN) 质询。要求 服务器在端口 443 上的 TLS 协商期间提供特定证书 来证明对某个网域的控制权如需了解详情,请参阅 ACME TLS-ALPN 质询扩展程序

  • DNS 验证。需要在指定位置添加特定 DNS 记录,以证明对网域的控制权。如需了解详情,请参阅 DNS 质询

如果您使用 HTTP 质询或 TLS-ALPN 质询来验证域名,客户端只能请求将经过验证的域名包含在证书中。如果您使用 DNS 质询, 客户端也可以请求将该域名的子域名添加到 证书。

例如,如果您使用 DNS 质询验证 *.myorg.example.com,则通配符证书会自动涵盖 subdomain1.myorg.example.comsubdomain2.myorg.example.com。不过,如果您使用 HTTP 或myorg.example.com TLS-ALPN 质询,客户端只能请求将 myorg.example.com 且您无法使用非 DNS 质询验证 *.myorg.example.com

验证解决方案逻辑

公共 CA 质询逻辑如下:

  1. 公共 CA 提供随机令牌。
  2. 客户端会在明确定义的位置提供令牌。通过 位置取决于挑战。
  3. 客户端向公共 CA 表明已准备好质询。
  4. Public CA 会检查令牌是否出现在预期位置 location 与预期值一致。

此流程完成后,域名将获得授权。客户端可以请求包含该域名的证书。您只需为每个域名解一个验证问题。