管理资源

通过 Certificate Authority Service 创建的证书授权机构 (CA) 依赖于两种次要资源类型:

  • Cloud Key Management Service 密钥版本,用于对 CA 颁发的证书和证书吊销列表 (CRL) 进行签名。如需详细了解密钥版本,请参阅密钥版本
  • Cloud Storage 存储桶,用于托管 CA 证书和 CA 发布的任何 CRL(如果启用了这些设置)。如需详细了解 Cloud Storage 存储分区,请参阅存储分区

这两个资源必须对每个 CA 都存在,并且在 CA 创建后无法更改。

管理模型

CA Service 支持这些资源的两种生命周期管理模型:

  • 由 Google 管理
  • 由客户管理

Cloud KMS 密钥和 Cloud Storage 存储桶无需使用相同的管理模型。例如,Cloud KMS 密钥可以由 Google 管理,Cloud Storage 存储桶可以由客户管理,反之亦然。

由 Google 管理

创建 CA 时,CA Service 会自动按照此模型创建和配置资源,并在删除 CA 时删除资源。您无需为这些资源单独付费。

默认情况下,新 CA 使用 Google 管理的 Cloud KMS 密钥和 Cloud Storage 存储分区。您可以在创建 CA 时为 Google 管理的 Cloud KMS 密钥选择特定的密钥算法。由 Google 管理的 Cloud KMS 密钥不会跨 CA 重复使用。

如需了解如何创建根 CA,请参阅创建根 CA。如需了解如何创建从属 CA,请参阅创建从属 CA。如需了解如何选择密钥算法,请参阅选择密钥算法

由客户管理

您只能为企业层级中的 CA 创建客户管理的资源。您必须在创建 CA 之前创建和配置客户管理的资源。此外,您必须在 CA 销毁后的适当时间删除这些资源。系统会直接向用户收取这些资源的费用。

CA Service 将该项目视为客户管理的 Cloud KMS 密钥的安全边界。例如,假设用户 Alice 使用客户管理的 Cloud KMS 密钥在项目 test 中创建 CA。然后,其他用户 Bob 可以使用同一 Cloud KMS 密钥在同一项目中创建另一个 CA。虽然 Alice 需要拥有密钥的管理员访问权限才能创建第一个 CA,但 Bob 不需要该密钥的任何访问权限,因为 Alice 已在项目 test 中启用 CA 服务使用该密钥。

创建由客户管理的资源的优势

此模式的一个优点是调用方可以直接控制这些资源。调用方可以直接更新访问权限管理等特性,以满足其组织要求。

使用客户管理的资源创建 CA 要求调用者拥有这些资源的管理员权限,以便授予对 CA 服务的适当访问权限。如需了解详情,请参阅 CA 服务代理

Cloud KMS 密钥的位置

您必须在 CA 服务资源所在的位置创建客户管理的 Cloud KMS 密钥。如需查看 CA Service 位置的完整列表,请参阅位置。如需查看可以创建 Cloud KMS 资源的位置列表,请参阅 Cloud KMS 位置

Cloud Storage 存储分区的位置

您必须在与 CA Service 资源大致相同的位置创建客户管理的 Cloud Storage 存储分区。您不能在已创建 CA 服务资源的大洲之外创建 Cloud Storage 存储桶。

例如,如果您的 CA 位于 us-west1,您可以在美国的任何单个区域(例如 us-west1us-east1)、双区域 NAM4 和多区域 US 中创建 Cloud Storage 存储分区。

如需查看可以创建 Cloud Storage 资源的位置列表,请参阅 Cloud Storage 位置

对托管资源的访问权限

默认情况下,拥有 Cloud Storage 存储桶上托管的 CA 证书的网址或 CA 发布的任何 CRL 的任何人都可以访问这些资源。如需阻止公开访问您的 CA 证书和 CRL,请将包含 CA 池的项目添加到 VPC Service Controls 边界

将包含 CA 池的项目添加到 VPC Service Controls 边界后,Google 管理的 Cloud Storage 存储桶就会加入该边界。VPC Service Controls 边界可确保无法从已批准的网络外部访问 Cloud Storage 存储桶。

网络边界内的客户端仍可访问 CRL 和 CA 证书,而无需进行身份验证。来自已批准网络外部的访问请求失败。

CA 证书和 CRL 的基于 HTTP 的网址

CA 证书和 CRL 可用于基于 HTTP 的网址,原因如下:

  • 发布在 Cloud Storage 存储桶中的 CA 证书不应按原样受客户端信任。CA 证书是证书链的一部分,该证书链以根 CA 的证书开头。证书链中的每个证书都由链中优先级较高的 CA 证书进行签名,以保持证书的完整性。因此,使用 HTTPS 协议没有额外的优势。

  • 某些客户端会在验证证书时拒绝基于 HTTPS 的网址。

为 CA 池中的 CA 启用 CA 证书和 CRL 发布

创建新的 CA 池时,CA Service 会默认允许将 CA 证书和 CRL 发布到 Cloud Storage 存储分区。如果您在创建 CA 池时停用了 CA 证书和 CRL 发布功能,并且现在希望启用它们,您可以按照本部分中的说明操作。

如需为 CA 池中的所有 CA 启用 CA 证书发布和 CRL 发布,请执行以下操作:

控制台

  1. 转到 Google Cloud 控制台中的 Certificate Authority Service 页面。

    转到 Certificate Authority Service

  2. CA 池管理器标签页下,点击要修改的 CA 池的名称。

  3. CA 池页面上,点击 修改

    使用 Cloud 控制台修改现有 CA 池。

  4. 配置允许的密钥算法和大小下,点击下一步

  5. 配置接受的证书请求方法下,点击下一步

  6. 配置发布选项下,点击将 CA 证书发布到此池中 CA 的 Cloud Storage 存储桶开关。

  7. 点击将 CRL 发布到此池中 CA 的 Cloud Storage 存储桶开关。

gcloud

运行以下命令:

gcloud privateca pools update POOL_ID --publish-crl --publish-ca-cert

POOL_ID 替换为 CA 池的名称。

如果启用 --publish-ca-cert,则 CA Service 会将每个 CA 的 CA 证书写入 Cloud Storage 存储桶,其路径在 CA 资源中指定。所有已颁发证书中的 AIA 扩展都指向包含 CA 证书的 Cloud Storage 对象网址。所有已颁发证书中的 CRL 分布点 (CDP) 扩展程序都指向包含 CRL 的 Cloud Storage 对象网址。

如需详细了解如何启用 CRL 发布内容以撤消证书,请参阅撤消证书

如需详细了解 gcloud privateca pools update 命令,请参阅 gcloud privatecapool update

为 CA 池中的 CA 停用 CA 证书和 CRL 发布

如需为 CA 池中的所有 CA 停用 CA 证书发布或 CRL 发布,请执行以下操作:

控制台

  1. 转到 Google Cloud 控制台中的 Certificate Authority Service 页面。

    转到 Certificate Authority Service

  2. CA 池管理器标签页下,点击要修改的 CA 池的名称。

  3. CA 池页面上,点击 修改

  4. 配置允许的密钥算法和大小下,点击下一步

  5. 配置接受的证书请求方法下,点击下一步

  6. 配置发布选项下,点击将 CA 证书发布到此池中 CA 的 Cloud Storage 存储桶开关。

  7. 点击将 CRL 发布到此池中 CA 的 Cloud Storage 存储桶开关。

gcloud

运行以下命令:

gcloud privateca pools update POOL_ID --no-publish-crl --no-publish-ca-cert

POOL_ID 替换为 CA 池的名称。

停用分发点不会删除 Cloud Storage 存储桶或其权限,也不会移除其中已托管的任何 CA 证书或 CRL。但是,这并不意味着以后的 CRL 将不再发布到 Cloud Storage 存储桶,并且未来的证书将不再具有 AIA 和 CDP 扩展。

更新已发布的 CA 证书和 CRL 的编码格式

如需更新已发布的 CA 证书和 CRL 的编码格式,请执行以下操作:

控制台

  1. 转到 Google Cloud 控制台中的 Certificate Authority Service 页面。

    转到 Certificate Authority Service

  2. CA 池管理器标签页下,点击要修改的 CA 池的名称。

  3. CA 池页面上,点击 修改

  4. 配置允许的密钥算法和大小下,点击下一步

  5. 配置接受的证书请求方法下,点击下一步

  6. 配置发布选项下,点击发布编码格式的下拉菜单。

  7. 选择发布编码格式。

gcloud

运行以下命令:

gcloud privateca pools update POOL_ID --publishing-encoding-format=PUBLISHING_ENCODING_FORMAT

替换以下内容:

  • POOL_ID:您的 CA 池的名称。
  • PUBLISHING_ENCODING_FORMATPEMDER

如需详细了解 gcloud privateca pools update 命令,请参阅 gcloud privatecapool update

后续步骤