Certificate Manager 的工作原理

Certificate Manager 使用灵活的映射机制, 您可以精细地控制 如何为您环境中的每个域名投放此类代码。机制 包括以下实体:

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

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

<ph type="x-smartling-placeholder">
</ph> Certificate Manager 实体。
Certificate Manager 实体(点击可放大)。

证书管理器支持目标 HTTPS 代理和目标 SSL 代理。有关 有关这些代理类型之间差异的信息,请参阅 使用目标代理

有关 Certificate Manager 证书类型的信息 请参阅部署概览

证书

默认情况下,一个证书代表一个 X.509 传输层安全协议 为特定域名或网域颁发的 (TLS) (SSL) 证书 通配符。

证书管理器支持以下类型的证书:

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

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

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

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

Google 管理的证书

管理适用于网站和应用的 Google 管理的 TLS (SSL) 证书 可能是一项复杂且耗时的任务,通常需要进行手动配置 和定期维护Certificate Manager 是一项服务, 通过提供一个集中式平台来帮助您简化这一流程。您可以将颁发和续用证书的责任委托给 Certificate Manager,从而腾出时间来处理其他重要任务。

您可以使用基于负载均衡器或基于 DNS 的授权来验证相关网域所有权。证书管理器支持 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 批准的公共 CA 颁发证书时,您可以将证书管理器配置为使用 Certificate Authority Service 中的 CA 池 证书颁发者。如需详细了解 CA 池,请参阅 创建 CA 池

自行管理的证书

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

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

证书映射

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

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

证书映射条目

证书映射条目是为特定 域名。您可以为不同的域名、 例如网域或子网域例如,您可以同时上传 ECDSA 和 RSA 证书并将其映射到同一域名。当客户端连接到 该域名,则负载均衡器会协商要传送至的证书类型 在握手期间向客户端发出调用请求

网域授权

通过证书管理器,您可以证明您对 您想要按如下说明颁发 Google 管理的证书 表格。

负载均衡器授权 DNS 授权
设置复杂性 不需要执行额外的配置步骤或更改 DNS 配置。 需要您创建 DNS 授权并添加其相应的 将 CNAME 记录添加到您的 DNS 配置中。
网络安全 负载均衡器必须可通过端口完全通过互联网访问 443(包括由 证书。不适用于其他配置。 适用于高复杂性配置,例如 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 则负载均衡器会优先处理这些证书,而非 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 应用层协议协商 (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. Public CA 提供随机令牌。
  2. 客户端会在明确定义的位置提供令牌。通过 位置取决于挑战。
  3. 客户端向 Public CA 表明,其已经准备好 挑战。
  4. Public CA 会检查令牌是否出现在预期位置 location 与预期值一致。

此过程完成后,将对域名进行授权。客户端可以 并请求包含该域名的证书您只需回答一道题 验证。